【问题标题】:Cloudant search document by attributes of nested objectsCloudant 按嵌套对象的属性搜索文档
【发布时间】:2017-08-04 16:51:31
【问题描述】:

我在 cloudant 中的文档结构如下

{
 "_id"      : "1234",
 "name"     : "test",
 "objects"  : [
   {
     "type"  :  "TYPE1"
     "time"  :  "1215
   },
   {
     "type"  :  "TYPE2"
     "time"  :  "1115"
   }
 ]
}

现在我需要按类型列表查询我的文档。

例子

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

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

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

_design 文档中的代码是什么样的?我的 API 请求是什么样的?

【问题讨论】:

    标签: indexing couchdb cloudant nosql


    【解决方案1】:

    一种选择是使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多