arrays - 数组中的 Mango 搜索

标签 arrays couchdb selector couchdb-mango

我的文档的结构如下:

{
  "Calibration": {
    "Presettings": {
      "Date": [
        {
          "Value": "2016-09-02 10:11",
          "Type": "generated"
        },
        {
          "Value": "2016-09-05",
          "Type": "schedule",
          "Duration": "5"
        }
      ]
    }
  }
}

我必须如何定义查询对象的选择器部分才能获取日期(值)小于或等于给定日期且 Type==' generated' 的所有文档?

最佳答案

首先,您需要创建索引。我建议您在 Calibration.Presettings.Date 字段 上创建索引。

您可以使用以下 JSON 对象来创建它:

{
  "index": {
    "fields": [
      "_id",
      "Calibration.Presettings.Date.[].Type"
    ]
  },
  "type": "json"
}

所以选择器会是这样的:

{
  "selector": {
    "Calibration.Presettings.Date": {
      "$elemMatch": {
        "$and": [
          {
            "Type": "generated"
          },
          {
            "Value": {
              "$gte": "2016-09-01"
            }
          }
        ]
      }
    }
  }
}

我们对字段Calibration.Pressettings.Date执行查询,该字段是一个数组。由于它是一个数组,因此我们必须使用 $elemMatch 运算符。

然后,我们有一个值和类型的 $and 条件。

日期类型必须生成。 With 可以使用 $eq 运算符,也可以简单地使用以下简单语法:{"field":"value"}

最后,日期值必须大于或等于 X 日期。我们可以使用 $gte 运算符。

关于arrays - 数组中的 Mango 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43892556/

相关文章:

jquery - 关于用户空间中的 CouchJS 的简单示例,例如使用浏览器?

couchdb - 从 CouchDB 获取当前用户信息?

objective-c - 方法和选择器有什么区别?

javascript - 从 DOM 中获取具有指定属性值的节点的最简单方法

javascript - lodash 上是否有 _.merge.apply(_, x); 的替代方案其中 x 是对象数组?

objective-c - 在类型 'title' 的对象上找不到属性 'id'

java - 添加用户输入升序的代码

c++ - 指向堆上数组的指针的地址

forms - 在 couchdb 中选择用户

javascript - 相当于 jQuery 的原型(prototype)选择器