mongodb - 使用 $ne 进行 Mongo 聚合

标签 mongodb pymongo

我似乎找不到任何关于使用 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/

相关文章:

java - MongoDB - 2dsphere 查询返回零结果

mongodb - 如何使用 pymongo 创建索引

python - 如何在 PyMongo 中为更新方法定义非常具体的过滤器

r - 如何使用 RMongo 计算特定列的平均值?

node.js - 同时 Mongo 插入是否有限制

spring - 如何在 MongoRepository 上创建计数查询

python - 属性错误: 'dict' object has no attribute 'is_active' (PyMongo And Flask)

python - 从 MongoDB (PyMongo) 访问集合时出现关键错误

java - Spring MongoDb ContextLoaderListener

mongodb - 匿名用户可以在启用 security.authorization 的情况下连接到 MongoDB