在Mongoengin中使用MapField查询文档时,FieldDoesNotExist

2024-05-07 19:04:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个包含嵌入文档的MapField文档

class Code(db.DynamicEmbeddedDocument):
path = db.StringField()
status = db.StringField()
creation_date = db.DateTimeField(default=datetime.datetime.now)

类项目(db.DynamicDocument):

creator = db.StringField()
title   = db.StringField()
creation_date = db.DateTimeField(default=datetime.datetime.now)
modified_date = db.DateTimeField(default=datetime.datetime.now)

sec_en = db.BooleanField()
tra_en = db.BooleanField()
rpi_en = db.BooleanField()
per_en = db.BooleanField()

sesame_en = db.BooleanField()
PI_en = db.BooleanField()

# each project has only one dataset, each dataset could have many projects
dataset      = db.StringField()

# each project has only one architecture, each architecture could have many projects
architecture = db.StringField()
model = db.StringField() #this is the new Algorithm configuration in the front-end, trained in step 1 and choose from results.


groups = db.ListField(db.ReferenceField('Group'))

code = db.MapField(db.EmbeddedDocumentField('Code'))

执行“get”时出现的错误是:

mongoengine.errors.FieldDoesNotExist: The fields "{'code'}" do not exist on the document "Project"

例如,文档的一个示例是:

{ 
"_id" : ObjectId("5defa12fd8460990fb4a11f7"), 
"title" : "Nepepojw", 
"creation_date" : ISODate("2019-12-10T13:44:15.405+0000"), 
"modified_date" : ISODate("2019-12-10T13:47:24.172+0000"), 
"sec_en" : false, 
"tra_en" : true, 
"rpi_en" : false, 
"per_en" : true, 
"sesame_en" : false, 
"PI_en" : false, 
"dataset" : "CIFAR10", 
"groups" : [
    ObjectId("5def7fca40cc5e9a0ae07ef8")
], 
"code" : {

}, 
"architecture" : "5defa12fd8460990fb4a11fb"

}

我试图使用DynamicEmbeddedDocument,但也使用meta={'strict':false},但没有得到任何结果。最糟糕的是不是所有的情况都发生了

提前谢谢


Tags: 文档falsedefaultdbdatetimedatedatasetnow