我有一个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" }}}
但它不起作用。有什么帮助吗?
答案 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" }
}
}