Mongoengine如何在集合的EmbeddedDocumentListField中检索过滤的子文档

问题描述 投票:0回答:1

我的文档模型如下:

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"})

任何建议将不胜感激。

python mongodb mongodb-query aggregation-framework mongoengine
1个回答
0
投票

[通过一些额外的搜索和实验,我发现您可以这样做:

subdocs = MyDocumentModel._get_collection().aggregate([
            {"$unwind": "$subdocuments"},
            {"$match": {'subdocuments.some_field':'my_field_value'}}
          ])

我希望这可以帮助需要做类似事情的其他人。

© www.soinside.com 2019 - 2024. All rights reserved.