Mongo查找查询不适用于某些值。

时间:2018-10-30 00:56:30

标签: mongodb boolean-expression

我写了一个包含OR运算符的Mongo搜索查询。其布尔表达式如下。

A和(B或C) 对于表达式的上述布局,如果 B C 之一为假,则它将返回false。因此,我的查询失败。更具体的Mongo查询如下。

{ "fieldName" : { "regex" : "AB.*" },
   "$and" : [[{"fieldName2" : "$in" : ["abc", "cds"]},
   "$or" : [{"fieldName3" : "$in" : ["abc", "cds"]}]]
}

在上述查询中,如果fieldName2具有abc之一,或者cdsfieldName3没有任何一个,则查询返回false,尽管它位于 OR 子句。

那么还有其他方法可以实现该搜索查询,如上述表达式中所述,或者我在这里做错了什么。 ?

1 个答案:

答案 0 :(得分:2)

$and$or将布尔运算应用于其数组值的内容。因此,您的查询应重写为:

{
  "fieldName" : { "regex" : "AB.*" },
  "$or": [{"fieldName2" : "$in" : ["abc", "cds"]}, 
          {"fieldName3" : "$in" : ["abc", "cds"]}]
}

请注意,您甚至不需要在这里使用$and,因为多个查询项都是隐式AND运算的。