如何获取MongoDB查询的反向结果?

如何获取MongoDB查询的反向结果?,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个疑问 SomeCollection.collection.find(:$or=>[{tags:'cool'},{tags:'awesome'},{tags:'neat'},…]) 我想修改相反的集合。所以所有的元素,除了在前面的语句中找到的元素。因此,在本例中,我希望所有不是标记的结果:'cool'| |标记:'awesome'| |标记:'neat'|… 我尝试了SomeCollection.collection.find(:$not=>{:$or=>[{tags:'cool'},{t

我有一个疑问

SomeCollection.collection.find(:$or=>[{tags:'cool'},{tags:'awesome'},{tags:'neat'},…])

我想修改相反的集合。所以所有的元素,除了在前面的语句中找到的元素。因此,在本例中,我希望所有不是
标记的结果:'cool'| |标记:'awesome'| |标记:'neat'|…


我尝试了
SomeCollection.collection.find(:$not=>{:$or=>[{tags:'cool'},{tags:'awesome'},{tags:'neat'},…]})
,这会导致语法错误。我也在考虑
SomeCollection.collection.find(:$and=>[{tags:{:$ne=>'cool'}},{tags:{:$ne=>'awesome'}},{tags:{:$ne=>'neat'}])
这是显式的反义词,给了我正确的答案。是否有一种简单的方法来获取反向集合?

您可以在查询中使用$ne

SomeCollection.collection.find($or : [ {tags: {$ne:'cool}}, ..]
由于您正在比较同一字段的值,因此甚至可以使用$nin。查询现在看起来像

SomeCollection.collection.find($or : [ {tags : {$nin : ['cool','awesome',..]} .. ]

$or的用途是什么?您是否使用任何其他字段来筛选值?我试图简化此问题的查询。$or语句跨越多个字段,并具有许多参数。因此有
标签
标题
说明
年份
。您的第二个查询可以简化为
db.collection.find({tags:{$nin:“酷”…< /Cord>,应该更好地执行<代码> $/<代码>。这是一个相当昂贵的操作。您可能需要相应地更新。谢谢Markus的建议,但是在上面的评论中也提到了其他领域的$/SPAN。在这种情况下,我想指出的是,Par到完全可怕的性能是可以预期的。许多<代码> $或<代码>条件的规模非常大。