Indexing 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进行查询,那么存在此类型对象的所

我在cloudant中的文档具有以下结构

{
 "_id"      : "1234",
 "name"     : "test",
 "objects"  : [
   {
     "type"  :  "TYPE1"
     "time"  :  "1215
   },
   {
     "type"  :  "TYPE2"
     "time"  :  "1115"
   }
 ]
}
现在我需要按类型列表查询文档

例子

1) 如果我使用TYPE1进行查询,那么存在此类型对象的所有文档都将返回。(示例文档将返回)

2) 如果我使用TYPE1TYPE3进行查询,它将返回包含其中任何一个的所有文档(示例文档将返回)

3) 如果我使用TYPE3TYPE4TYPE5进行查询,它将返回包含其中任何一个的所有文档(示例文档不会返回)

设计文档中的代码会是什么样子?我的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