4

我似乎无法通过布尔操作在 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

4

1 回答 1

16

您可以将其放在它自己的$match管道元素中,或者将其包含在初始的$match.

所以要么添加:

{'$match': {'quxx': {'$ne': 'rogue'}}}

或将首字母修改$match为:

{'$match': {'foo': 3, 'bar': 'baz', 'quxx': {'$ne': 'rogue'}}}
于 2013-03-11T03:22:06.720 回答