Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongo加总$ne_Mongodb_Pymongo - Fatal编程技术网

Mongodb Mongo加总$ne

Mongodb Mongo加总$ne,mongodb,pymongo,Mongodb,Pymongo,在使用布尔运算的Mongo聚合上,我似乎根本找不到任何资源。我的查询如下(我使用的是pymongo驱动程序): 这一切都很好($match在索引中等)。现在,我想从管道中过滤出一个流氓quxx,所以我想我应该使用$ne操作符。然而,我似乎无法找到正确的方法来做这件事!我不确定我是否没有将其放置在正确的位置(我希望它位于$match运算符之后,但在$group运算符之前),或者我的语法有误,但请提供帮助 到目前为止,我尝试过的东西(都是在$match之后的步骤中)是: 它们中的每一个都给了我无法识

在使用布尔运算的Mongo聚合上,我似乎根本找不到任何资源。我的查询如下(我使用的是pymongo驱动程序):

这一切都很好(
$match
在索引中等)。现在,我想从管道中过滤出一个流氓quxx,所以我想我应该使用
$ne
操作符。然而,我似乎无法找到正确的方法来做这件事!我不确定我是否没有将其放置在正确的位置(我希望它位于
$match
运算符之后,但在
$group
运算符之前),或者我的语法有误,但请提供帮助

到目前为止,我尝试过的东西(都是在
$match
之后的步骤中)是:


它们中的每一个都给了我
无法识别的管道op

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

因此,要么加上:

{'$match':{'quxx':{'$ne':'rogue'}}
或将初始的
$match
修改为:

{'match':{'foo':3,'bar':'baz','quxx':{'ne':'rogue'}

初始匹配遍历一个复合索引,我不想在quxx上建立索引。这是否意味着我应该使用前者?@dreamriver在相同的
find
上使用
explain
检查修改后的初始匹配,以查看您的现有索引是否仍在使用(我预计会使用)。请参阅:
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}])
{'$quxx': {'$ne': 'rogue'}}
{'quxx': {'$ne': 'rogue'}}
{'$ne': {'quxx': 'rogue'}}
{'$ne': {'$quxx': 'rogue'}}