如何将$ not逻辑查询运算符与其他比较查询运算符结合使用以获得更具体的收益?

时间:2016-09-20 11:01:03

标签: arrays mongodb meteor mongodb-query

这是查询后我的文档的结果

players.find().fetch():

{name:'john',     sessionIDz:"utFmxmRioDiZdmwGJ"},
{name:'jessica',  sessionIDz:"FmwgXvxHZmuAwSzpe"},
{name:'Liz',      sessionIDz:"FmwgXvxHZmuAwSzpe"},
{name:'Ericsson', sessionIDz:"FmwgXvxHZmuAwSzpe", Winner: 1},
{name:'Anderson', sessionIDz:"utFmxmRioDiZdmwGJ"}

查询后:

players.find( { Winner: { $not: { $gte: 1 } } } ).fetch()

Yeilds:

{name:'Anderson', sessionIDz:"utFmxmRioDiZdmwGJ"},
{name:'john', sessionIDz:"utFmxmRioDiZdmwGJ"},
{name:'jessica', sessionIDz:"FmwgXvxHZmuAwSzpe"},
{name:'Liz', sessionIDz:"FmwgXvxHZmuAwSzpe"}

哪个好。但是现在,我如何进一步缩小包含字段sessionIDz的所有文档的收益率:“FmwgXvxHZmuAwSzpe”,如下图所示:

{name:'jessica', sessionIDz:"FmwgXvxHZmuAwSzpe"},
{name:'Liz', sessionIDz:"FmwgXvxHZmuAwSzpe"}

有没有办法可以将$ not逻辑查询运算符与其他比较查询运算符结合使用来实现这种收益?

我已尝试过以下查询,但未能获得所需的结果:

player.find({Winner: { $not: { $gte: 1 }}}, {sessionIDz: { $eq:"FmwgXvxHZmuAwSzpe" } }).fetch()

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您需要在同一查询对象中包含条件。因为逻辑不大于或等于

{ "$not": { "$gte": 1 } }

少于

相同
{ "$lt": 1 }

您的查询可能会简化为

player.find({
    "Winner": { "$lt": 1 }, 
    "sessionIDz": "FmwgXvxHZmuAwSzpe" 
}).fetch()

或者如果要查询Winner字段不存在的位置,则查询为

player.find({
    "Winner": { "$exists": false }, 
    "sessionIDz": "FmwgXvxHZmuAwSzpe" 
}).fetch()

答案 1 :(得分:2)

查询json必须是find函数的第一个参数。您已将查询拆分为2个单独的对象,这就是您无法获得所需结果的原因。

请尝试以下方法:

player.find( { Winner: { $not: { $gte: 1 } }, sessionIDz: "FmwgXvxHZmuAwSzpe" }).fetch()

此外,不大于或等于 = 小于。因此,以下内容也将取得您的成果。

player.find( { Winner: { $lt: 1 }, sessionIDz: "FmwgXvxHZmuAwSzpe" }).fetch()