mongoengine - 使用管道查找2个数组之间的匹配项

时间:2017-03-15 14:18:18

标签: python pymongo mongoengine flask-mongoengine

我需要使用mongoengine

对MongoDB进行查询

我有一个包含组列表的文档: groups = ['groupa', 'groupb'...]

此外,我还有其他群组my_groups= ['groupc', 'groupd', 'groupc'...]

的列表

想要的结果是找到这些数组之间匹配的所有文档。

我看到了question,但不是通过mongoengine

我如何通过mongoengine

来实现这一目标

1 个答案:

答案 0 :(得分:2)

将纯MongoDB查询调整为Mongoengine非常容易。假设您的集合名为Foo,则字段的名称为groups,并且您与之比较的列表已分配给变量my_groupsmentioned answer的查询将如下所示< / p>

Foo.objects.aggregate(*[ 
             { "$match": { "groups.1": { "$exists": True } } }, 
             { "$redact": { 
                "$cond": [ 
                     { "$gte": [ 
                         { "$size": { "$setIntersection": [ "$groups", my_groups ] } }, 
                         1
                     ]},
                     "$$KEEP", 
                     "$$PRUNE" 
                 ]
             }}
         ])

请注意列表参数前面的星号。