[英]Mongoengine: insert ListField item into a specific embedded Document
[英]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.