我正在尝试做这样的事情:
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中表达它?
首先,我不认为你的意思是"和",因为一个字段永远不会同时为3 和 4 - 它只能是3 或 4.所以,假设你确实想要"b不是3或4的文件,那么你可以使用这样的$ nin(不是):
db.table.find({b:{$nin: [3,4]}});
Run Code Online (Sandbox Code Playgroud)