我的文档模型如下:
class MyDocumentModel(DynamicDocument):
subdocuments = EmbeddedDocumentListField(MySubdocumentModel)
class MySubdocumentModel(EmbeddedDocument):
some_field = StringField()
我想做的是通过过滤MySubdocumentModel
上的MyDocumentModel
获得整个集合中subdocuments
文档中包含的所有some_field
嵌入文档的列表。有人知道这是否可行吗/如何在mongoengine
中做到这一点?到目前为止,我的研究尚未产生任何有用的结果。
我尝试过的事情:
MyDocumentModel.objects(subdocuments__some_field="my_field_value")
MyDocumentModel.objects(subdocuments__match={"some_field": "my_field_value"})
任何建议将不胜感激。
[通过一些额外的搜索和实验,我发现您可以这样做:
subdocs = MyDocumentModel._get_collection().aggregate([
{"$unwind": "$subdocuments"},
{"$match": {'subdocuments.some_field':'my_field_value'}}
])
我希望这可以帮助需要做类似事情的其他人。