我怎么会有多个$或操作?到目前为止,我已经尝试了以下但它默默地忽略了第二个$或.
{
$or: [{a: 2}, {a: 3}],
$or: [{b: 5}, {b: 4}]
}
Run Code Online (Sandbox Code Playgroud)
我认为这是因为我使用了两个相同的键.有没有办法解决?
如文档中所述,这是不可能的.
请考虑以下示例:
db.inventory.find( {
$and : [
{ $or : [ { price : 0.99 }, { price : 1.99 } ] },
{ $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
]
} )
Run Code Online (Sandbox Code Playgroud)
此查询将返回所有选择所有文档,其中:
price字段值等于0.99或1.99,sale字段值等于true或qty字段值小于20.
无法使用隐式AND操作构造此查询,因为它多次使用$或运算符.
查询此类内容的解决方法是什么?此查询在MongoDB 3.2上不返回任何结果.我已经分别测试了$或块,它们工作正常,但不是当它们被包裹在$和块中时.我假设我没有错误地阅读文档,认为这不应该工作.我唯一的选择是将数据推送到ElasticSearch并在那里查询,但这也只是一种解决方法.
{
"$and": [
{
"$or": [
{
"title": {
"$regex": "^.*html .*$",
"$options": "i"
}
},
{
"keywords": {
"$regex": "^.*html .*$",
"$options": "i"
}
} …Run Code Online (Sandbox Code Playgroud)