唯一的()方法 - Mongoengine

时间:2018-03-18 22:17:45

标签: mongoengine

小型Mongoengine问题: 我想问这样做是否有用:

MyClass.objects.only('MyEmbeddedField.MyField').first().MyEmbeddedField.MyField 

为了节省复杂性?

据我所知,调用first()方法从数据库中下载整个对象(如果我错了,请纠正我)。这甚至是个好主意吗?

如何完全访问文档中的特定字段?

1 个答案:

答案 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()