Cloudant选择器查询数组字段

时间:2016-04-10 13:12:34

标签: cloudant

我有一个cloudant文档,其中包含这个特定结构的json数组类别,其中包含子类别数组,     我正在尝试编写一个cloudant查询,返回给定category_id(例如128)的文档我的问题是它是一个数组。  例如:

"category": {
    "sub_category": [
      {
        "name": {
          "en": "Fast food"
        },
        "category_id": "127"
      },
      {
        "name": {
          "en": "Resturans"
        },
        "category_id": "128"
      }
    ],
}

到目前为止,我试图写下这个索引:

{
   "index": {},
   "type": "text"
}

索引所有内容和选择器:

{"category.sub_category":{"$elemMatch" : {"category_id": {"$gt": 128" }}}

但它不起作用。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

看起来您将category_id存储为字符串,但之后尝试执行数字比较。如果将category_ids更改为整数:

"category_id": 127
...
"category_id": 128

那么这个选择器应该可以工作:

"category.sub_category": {
    "$elemMatch" : {
        "category_id": {"$gt": 126 }
    }
}

注意:我将查询中的值更改为126,因为您的样本值为127和128,并且不会传递原始查询(> 128)。

或者,如果您想将category_id保留为字符串,并且想要找到category_id 等于" 128"然后你可以使用以下选择器:

"_id": { "$gt": null },
"category.sub_category": {
    "$elemMatch" : {
        "category_id": {"$eq": "128" }
    }
}