我似乎找不到任何关于使用 bool 运算的 Mongo 聚合的资源。我的查询看起来像这样(我使用的是 pymongo 驱动程序):
db.collection.aggregate([{'$match': {'foo': 3, 'bar': 'baz'}},
{'$project': {'quxx': 1, '_id': 0, 'count': 1}},
{'$group': {'total': {'$sum': '$count'}, '_id': '$quxx'}},
{'$sort': {'total': -1}},
{'$limit': 2000}])
一切都很好($match
在索引上等)。现在,我想从管道中过滤掉一个流氓 quxx,所以我想我会使用 $ne
运算符。但是,我似乎无法找出正确的方法!我不确定我是否没有将它放在正确的位置(我希望它在 $match
运算符之后但在 $group
运算符之前)或者我有语法错误,但不胜感激。
到目前为止我尝试过的事情(都是在 $match
之后的自己的步骤中)是:
{'$quxx': {'$ne': 'rogue'}}
{'quxx': {'$ne': 'rogue'}}
{'$ne': {'quxx': 'rogue'}}
{'$ne': {'$quxx': 'rogue'}}
它们中的每一个都给我 unrecognized pipeline op
。
最佳答案
您可以将它放在它自己的 $match
管道元素中,或者只将它包含在初始的 $match
中。
所以要么添加:
{'$match': {'quxx': {'$ne': 'rogue'}}}
或者修改初始的$match
为:
{'$match': {'foo': 3, 'bar': 'baz', 'quxx': {'$ne': 'rogue'}}}
关于mongodb - 使用 $ne 进行 Mongo 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330629/