小型Mongoengine问题: 我想问这样做是否有用:
MyClass.objects.only('MyEmbeddedField.MyField').first().MyEmbeddedField.MyField
为了节省复杂性?
据我所知,调用first()方法从数据库中下载整个对象(如果我错了,请纠正我)。这甚至是个好主意吗?
如何完全访问文档中的特定字段?
答案 0 :(得分:0)
以下是我试图复制您的用例的内容。根据{{3}},它只加载文档的总字段的子集。
考虑以下文件。
class Test(Document):
my_first_field = StringField()
my_second_field = IntField()
然后,
t = Test(my_first_field='my field data', my_second_field=10)
t.save()
然后一旦你查询它们,
for i in Test.objects(id=t.id).only('my_first_field').exclude('id'):
print(i.to_json())
for i in Test.objects(id=t.id).only('my_first_field'):
print(i.to_json())
就像这样,你得到了首选的输出:
{"my_first_field": "my field data"}
{"_id": {"$oid": "5aafc55119185b2ac0f8e729"}, "my_first_field": "my field data"}
同样,您也可以将.first()
链接到查询,然后根据您要求包含和/或排除的字段获取第一个匹配的查询。
Test.objects(id=t.id).only('my_first_field').exclude('id').first().to_json()