Javascript Mongo得到查询的逆

Javascript Mongo得到查询的逆,javascript,mongodb,Javascript,Mongodb,你好,我很难理解如何编写此查询 我的收藏包括以下一系列条目: { id:1, name:"peter", number:3 } 我希望能够编写一个查询,该查询将返回所有项目,除了文件名为

你好,我很难理解如何编写此查询

我的收藏包括以下一系列条目:

{
  id:1,
  name:"peter",
  number:3
 }
我希望能够编写一个查询,该查询将返回所有项目,除了文件名为编号为3的项目

我知道我可以写一些东西,比如:

db.test.find({$and:[{'name':'peter'},{'num':3}]})

要返回所有匹配项,是否有任何方法重写此查询以返回除匹配元素以外的所有内容?

运算符“$not需要绑定一个字段,但在这种情况下它不起作用。 基本上,我不得不重新思考我的问题,使用

,(A^B)=,(A)V,(B)

非(A和B)=非(A)或非(B) 所以我的问题是

db.test.find({ $or:[{name:{$not:{$eq:'peter'}}},{num:{$not:{$eq:3}}}]});

拯救布尔代数

您可以使用$ne运算符测试不相等性:

find({$and: [{name: {$ne: peter}}, {num: {$ne: 2}}]})

您可以使用仅涉及一条语句的技巧。您唯一的语句就是原始查询。这是因为
$nor
意味着所有条件都必须为false;如果你只有一个条件,你会得到否定

因此,请尝试:

db.test.find({$nor:[{$and:[{'name':'peter'},{'num':3}]}]})

我认为这很好,因为它与原始查询完全相反

请参见文档:问题在于,它不会返回任何名为“peter”的值,而不管数字和vise versaHi Mario!如何为$nor查询构建复合索引。就像我有一个用于查询的索引,并希望为$nor创建反向索引一样-query@professrr我已经有几年没有使用mongo了,但我不认为您真的可以为任意查询创建索引:复合索引是多个字段上的索引,对吗?这不是任何查询都可以做的事情,即使使用$,它也不会工作(如果我没有错的话)。你也可以试着把它作为一个问题贴在这里,如果你想得到更多的话details@professrr然而,在这个具体的例子中,我相信如果您在
name
num
上都有一个计算索引,ti可能会被原始查询
$和
以及它的否定
$或
使用,因为最后我们要检查索引字段上的相等或不相等