cloudant中的二级索引,用于将多个文档聚合到单个文档

时间:2017-05-18 07:29:06

标签: cloudant

我正在尝试在cloudant中创建一个二级索引,将多个文档聚合到一个文档中。这就是我所拥有的场景,比如我有一个包含人员地址的Cloudant数据库和属于虚构人John G的三个示例文档如下

文件1

{
    "id":"xxx",
    "Name":"John G",
    "Address Type":"H",
    "Address":" Home Address blah blah blah"
}

文件2

{
    "id":"yyy",
    "Name":"John G",
    "Address Type":"O",
    "Address":"Office Address blah blah blah"
}

文件3

{
    "id":"zzz",
    "Name":"John G",
    "Address Type":"V",
    "Address":"Vacation/Summer house Address blah blah blah"
}

我想在这个数据库上创建一个二级索引/视图,它聚合属于John G的这三个文档,并创建一个如下所示的单个文档

文档

{
    "id":"www",
    "key":"John G",
    "value":
      {
          "Address_Home":"Home Address blah blah blah",
          "Address_Office":"Office Address blah blah blah",
          "Address_Summerhouse":"Vacation/Summer house Address blah blah blah"
      }
}

请建议我应该如何编写视图/辅助索引来实现此目的。

1 个答案:

答案 0 :(得分:0)

您无法按照自己的建议实现自己的建议。视图采用一个文档并仅基于该文档发出数据。你不能做“子查询”。在地图功能中。如果已将一个id存储在另一个中,可以在视图中链接文档(想想外键)。但是,我认为这里的问题是你试图将关系模型转变为Cloudant,这通常是一个坏主意。相反,取消规范化,并将所有三个地址记录存储在同一文档中。如果你来自关系背景,这似乎效率低下 - 但Cloudant没有传统意义上的连接,而原子单元就是文档。