【问题标题】:mongoengine - use pipeline to find a match between 2 arraysmongoengine - 使用管道查找 2 个数组之间的匹配项
【发布时间】:2017-08-06 08:20:33
【问题描述】:

我需要使用 mongoengine 查询 MongoDB

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

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

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

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

如何通过mongoengine 做到这一点?

【问题讨论】:

标签: python pymongo mongoengine flask-mongoengine


【解决方案1】:

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

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

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

【讨论】:

  • 太棒了!如果我想用 or 扩展这个查询? (此聚合查询或其他匹配)
猜你喜欢
  • 1970-01-01
  • 2014-04-09
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-01
  • 2014-07-03
相关资源
最近更新 更多