在mongodb中使用$ not

Kla*_*und 3 mongodb nosql

我正在尝试做这样的事情:

select * from table where not (a=3 and b=4 and c=3 or x=4)
Run Code Online (Sandbox Code Playgroud)

我希望这可行:

db.table.find({
  $not: {
    $or: [
      {
        $and: [
          { a: 3 },
          { b: 4 },
          { c: 3 }
        ]
      },
      { x: 4 }
    ]
  }
})
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误:

 error: { "$err" : "invalid operator: $and", "code" : 10068 }
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以在mongodb中表达它?

Ada*_*Dev 5

首先,我不认为你的意思是"和",因为一个字段永远不会同时为3 4 - 它只能是3 4.所以,假设你确实想要"b不是3或4的文件,那么你可以使用这样的$ nin(不是):

db.table.find({b:{$nin: [3,4]}});
Run Code Online (Sandbox Code Playgroud)