我需要在 MongoDB 上使用mongoengine
我有一个包含组列表的文档:
groups = ['groupa', 'groupb'...]
另外,我还有其他组的列表my_groups= ['groupc', 'groupd', 'groupc'...]
想要的结果是找到在这些数组之间有任何匹配的所有文档。
我看到了这个问题,但不是通过mongoengine
我怎样才能做到这一点mongoengine
?
我需要在 MongoDB 上使用mongoengine
我有一个包含组列表的文档:
groups = ['groupa', 'groupb'...]
另外,我还有其他组的列表my_groups= ['groupc', 'groupd', 'groupc'...]
想要的结果是找到在这些数组之间有任何匹配的所有文档。
我看到了这个问题,但不是通过mongoengine
我怎样才能做到这一点mongoengine
?
将纯 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"
]
}}
])
请注意列表参数前的星号。