Cloudant 按嵌套对象的属性搜索文档
Cloudant search document by attributes of nested objects
我在 cloudant 中的文档具有以下结构
{
"_id" : "1234",
"name" : "test",
"objects" : [
{
"type" : "TYPE1"
"time" : "1215
},
{
"type" : "TYPE2"
"time" : "1115"
}
]
}
现在我需要按类型列表查询我的文档。
例子
1) 如果我使用 TYPE1 进行查询,那么所有包含此类型对象的文档都将 return。 (示例文档将 return)
2) 如果我使用 TYPE1 和 TYPE3 进行查询,它将 return 所有包含其中任何一个的文档(示例文档将 return)
3) 如果我使用 TYPE3、TYPE4 和 TYPE5 进行查询,它将 return 包含其中任何一个的所有文档(示例文档不会 return)
_design 文档中的代码会是什么样子,我的 API 请求会是什么样子?
一种选择是使用 Cloudant Search。
名为 types
的样本设计文档,它索引了 objects
数组
中的每个 type
属性
{
"_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
。
我在 cloudant 中的文档具有以下结构
{
"_id" : "1234",
"name" : "test",
"objects" : [
{
"type" : "TYPE1"
"time" : "1215
},
{
"type" : "TYPE2"
"time" : "1115"
}
]
}
现在我需要按类型列表查询我的文档。
例子
1) 如果我使用 TYPE1 进行查询,那么所有包含此类型对象的文档都将 return。 (示例文档将 return)
2) 如果我使用 TYPE1 和 TYPE3 进行查询,它将 return 所有包含其中任何一个的文档(示例文档将 return)
3) 如果我使用 TYPE3、TYPE4 和 TYPE5 进行查询,它将 return 包含其中任何一个的所有文档(示例文档不会 return)
_design 文档中的代码会是什么样子,我的 API 请求会是什么样子?
一种选择是使用 Cloudant Search。
名为 types
的样本设计文档,它索引了 objects
数组
type
属性
{
"_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
。