如何使用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()我想通过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的文档)呢?不知道我还能做什么
干杯
发布于 2020-05-12 01:46:48
当你进行查询时,它仍然会指向提到了liteature__id的特定Project文档。您必须使用filter进行查询。
literature = Project.objects.filter(project_name=project_name,literature__id=id)
这仍然会指向项目对象,因为您是在Project上进行查询,而Literature是其中的一个嵌入文档。
https://stackoverflow.com/questions/61681899
复制相似问题