我在cloudant中的文档具有以下结构
{
"_id" : "1234",
"name" : "test",
"objects" : [
{
"type" : "TYPE1"
"time" : "1215
},
{
"type" : "TYPE2"
"time" : "1115"
}
]
}
现在我需要通过类型列表查询我的文档。
实施例
1)如果我使用 TYPE1 进行查询,那么将返回存在此类型对象的所有文档。 (示例doc将返回)
2)如果我使用 TYPE1 和 TYPE3 进行查询,则会返回包含其中任何一个的所有文档(示例文档将返回)
3)如果我使用 TYPE3 , TYPE4 和 TYPE5 进行查询,则会返回包含其中任何一个的所有文档(示例doc)不会回来)
_design文档中的代码如何?我的API请求将如何?
答案 0 :(得分:3)
一种选择是使用Cloudant Search。
名为types
的示例设计文档,用于索引type
数组中的每个objects
属性
{
"_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
)
GET https://$HOST/$DATABASE/_design/$DDOC/_search/one-of?q=type%3ATYPE1
搜索多个密钥(type=val1 OR type=val2
)
GET https://$HOST/$DATABASE/_design/$DDOC/_search/one-of?q=type%3ATYPE1%20OR%20type%3ATYPE2
搜索多个密钥(type=val1 AND type=val2
)
GET https://$HOST/$DATABASE/_design/$DDOC/_search/one-of?q=type%3ATYPE1%20AND%20type%3ATYPE2
将文档包含在响应追加&include_docs=true
。