选择器是数组时如何搜索值

时间:2019-05-28 18:32:40

标签: json couchdb

我的沙发数据库上有以下json文档。

{ 
  {
      "_id": "someid|goes|here",
      "collected": {
          "tags": ["abc", "def", "ghi"]
      }
  },
  {
      "_id": "someid1|goes|here",
      "collected": {
           "tags": ["abc", "klm","pqr"]
      },
  },
  {
      "_id": "someid2|goes|here",
      "collected": {
           "tags": ["efg", "hij","klm"]
      },
  }
}

如何获取collected.tags包含abc的记录?到目前为止,我尝试过的是

{
   "selector": {
      "collected.tags": {
         "$regex": "abc"
      }
   }
}

1 个答案:

答案 0 :(得分:0)

如果我已正确理解您正在从3个不同的文档中查询此内容。根据CouchDb文档,使用$elemMatch运算符可以返回所有文档,其中至少有一个元素根据指定的条件进行了匹配。如果是这样,请使用以下查询过滤出文本“ abc”:

{
  "selector": {
    "collected.tags": {
      "$elemMatch": {
        "$regex": "abc"
      }
    }
  }
}

希望这会有所帮助。 :)