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

标签 mongodb boolean-expression

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

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

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

在上面的查询中,如果 fieldName2 具有 abc 之一 cdsfieldName3 不具有其中任何一个,查询都会返回 false,尽管它位于 OR 子句中。

那么有没有其他方法可以实现这个搜索查询,就像上面提到的表达式或者我在这里做错了什么。 ?

最佳答案

$and$or 对数组值的内容应用 bool 运算。所以你的查询应该重写为:

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

请注意,您甚至不需要在此处使用 $and,因为多个查询词是隐式进行 AND 运算的。

关于mongodb - Mongo 查找查询不适用于某些值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53055919/

相关文章:

c++ - 是否保证不会对 if 语句进行不必要的评估?

java - MongoDB 地理定位与 Spring MVC 结合使用

mongodb - 是否可以在 Mongo shell 中创建 ObjectId?

mongodb - 使用logstash elasticsearch的mongodb输入插件

c# - 如何使用 MongoDB 部署 C# .net 应用程序

C# Driver SafeMode off Upserts - 并非所有记录都已更新/插入

c++ - 当函数返回类型为 bool 时,为什么不能在 C++14 中返回共享指针?

javascript - 如何计算将 bool 表达式字符串括起来以求得所需结果的方法的数量

java - 循环不会多次迭代 if 语句

javascript - 评估存储为字符串的 bool 条件