Indexing Cloudant按嵌套对象的属性搜索文档
我在cloudant中的文档具有以下结构Indexing Cloudant按嵌套对象的属性搜索文档,indexing,couchdb,cloudant,nosql,Indexing,Couchdb,Cloudant,Nosql,我在cloudant中的文档具有以下结构 { "_id" : "1234", "name" : "test", "objects" : [ { "type" : "TYPE1" "time" : "1215 }, { "type" : "TYPE2" "time" : "1115" } ] } 现在我需要按类型列表查询文档 例子 1) 如果我使用TYPE1进行查询,那么存在此类型对象的所
{
"_id" : "1234",
"name" : "test",
"objects" : [
{
"type" : "TYPE1"
"time" : "1215
},
{
"type" : "TYPE2"
"time" : "1115"
}
]
}
现在我需要按类型列表查询文档
例子
1) 如果我使用TYPE1进行查询,那么存在此类型对象的所有文档都将返回。(示例文档将返回)
2) 如果我使用TYPE1和TYPE3进行查询,它将返回包含其中任何一个的所有文档(示例文档将返回)
3) 如果我使用TYPE3、TYPE4和TYPE5进行查询,它将返回包含其中任何一个的所有文档(示例文档不会返回)
设计文档中的代码会是什么样子?我的API请求会是什么样子?一个选项是使用
名为类型
的示例设计文档,对对象
数组中的每个类型
属性进行索引
{
"_id": "_design/types",
"views": {},
"language": "javascript",
"indexes": {
"one-of": {
"analyzer": "standard",
"index": "function (doc) {\n for(var i in doc.objects) {\n index(\"type\", doc.objects[i].type); \n }\n}"
}
}
}
查询示例:
搜索一个键(type=val
)
搜索多个键(type=val1或type=val2
)
搜索多个键(type=val1和type=val2
)
要在响应中包含文档,请附加&include\u docs=true
GET https://$HOST/$DATABASE/_design/$DDOC/_search/one-of?q=type%3ATYPE1
GET https://$HOST/$DATABASE/_design/$DDOC/_search/one-of?q=type%3ATYPE1%20OR%20type%3ATYPE2
GET https://$HOST/$DATABASE/_design/$DDOC/_search/one-of?q=type%3ATYPE1%20AND%20type%3ATYPE2