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) 如果我使用 TYPE1TYPE3 进行查询,它将 return 所有包含其中任何一个的文档(示例文档将 return)

3) 如果我使用 TYPE3TYPE4TYPE5 进行查询,它将 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