我正试图将一个常规MongoDB查询运算符与一个$or
运算符相结合,但我得到了一个意外的结果。
假设我有这些记录:
[
{
"foo": "foo",
"bar": "bar",
"baz": null
},
{
"foo": "foo",
"bar": "rab",
"baz": "zab"
}
]
如您所见,它们共享foo
值,但在bar
和baz
值上有所不同。
如果我运行这个查询:
{
"foo": "foo",
"$or": [
{
"bar": "bar",
"baz": "baz"
}
]
}
我没有结果。有什么想法吗?我希望它能与我的第一份文件相匹配。
但是,如果我运行这个查询,它只包括$or
块中的一个表达式:
{
"foo": "foo",
"$or": [
{
"bar": "bar"
}
]
}
我确实在第一份文件上找到了匹配项。从文档中可以看出,$or
运算符需要两个或多个表达式。这意味着它可能只是将具有单个表达式的$or
查询作为普通表达式进行求值。
您遇到的问题是,由于在$or
中使用表达式的方式,您给了他一个表达式对象,并希望他对该表达式执行or
逻辑,但这不是它的工作方式。
你想做的只是给他多个表达式,比如:
{
"foo": "foo",
"$or": [
{
"bar": "bar",
},
{
"baz": "baz"
}
]
}