繁体   English   中英

Mongoengine:如何获取一个特定的嵌入文档?

[英]Mongoengine: How to get one specific embedded document?

如何通过 mongoengine 的 ID 获取一个特定的嵌入式文档?

这些是我的模型:

class Project(Document):
    project_name = StringField(unique=True, required=True)
    literature = ListField(EmbeddedDocumentField(Literature))

class Literature(EmbeddedDocument):
    id = ObjectIdField(required=True, default=ObjectId,
                        unique=True, primary_key=True, sparse=True)
    title = StringField()

我想得到一个特定的文献 Object 例如通过 id “2”。

我试过这个:

literature = Project.objects(project_name=project_name).get(
        literature__id=2).literature

但这给了我所有的文献对象,而不仅仅是 ID 为“2”的对象

我也尝试过这样的事情:

literature = Project.objects.get(project_name=project_name).literature.filter(
        literature__id=2)

但这会引发错误AttributeError: 'BaseList' object has no attribute 'filter'

那么有什么方法可以只获取特定的嵌入文档(ID= 2 的文献)? 不知道我还能做什么

干杯

当您进行查询时,它仍然会指向带有liteature__id的特定Project文档。 您必须对查询使用filter

literature = Project.objects.filter(project_name=project_name,literature__id=id)

这仍将指向项目 object,因为您正在对Project进行查询,而Literature是其中的嵌入式文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM