我尝试将常规 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
block 内的单个表达式:
{
"foo": "foo",
"$or": [
{
"bar": "bar"
}
]
}
我确实在第一个文档上得到了匹配。来自 the docs据说 $or
运算符需要两个或多个表达式。这意味着它可能只是将单个表达式作为普通表达式来评估 $or
查询。
最佳答案
您遇到的问题是因为您在 $or
中使用表达式的方式,您给了他一个 expression object并期望他对该表达式执行 or
逻辑,这不是它的工作原理。
你想做的就是给他多个表情,就像这样:
{
"foo": "foo",
"$or": [
{
"bar": "bar",
},
{
"baz": "baz"
}
]
}
关于mongodb - 将常规 MongoDB 查询运算符与 $or 运算符相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70142383/