1

我需要在 MongoDB 上使用mongoengine

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

另外,我还有其他组的列表my_groups= ['groupc', 'groupd', 'groupc'...]

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

我看到了这个问题,但不是通过mongoengine

我怎样才能做到这一点mongoengine

4

1 回答 1

2

将纯 MongoDB 查询适配到 Mongoengine 非常容易。假设您的集合已命名Foo,字段已命名groups,并且您与之比较的列表已分配给变量my_groups,来自上述答案的查询将如下所示

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

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

于 2017-03-19T22:49:12.533 回答