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

Secondary index in cloudant to aggregate multiple documents to single document

我正在尝试在 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"
}

我想在此数据库上创建一个辅助 index/view 以聚合属于 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"
      }
}

请建议我应该如何编写 view/secondary 索引来实现这一点。

你不能像你建议的那样完全实现你的建议。视图获取一个文档并仅基于该文档发出数据。您不能在地图函数内执行 'sub queries' 。如果您已将一个文档的 ID 存储在另一个文档中(想想外键),则有一种方法可以在视图中 link 文档。但是,我认为这里的问题是您试图将关系模型硬塞进 Cloudant,这通常不是一个好主意。相反,反规范化,并将所有三个地址记录存储在同一个文档中。如果您来自关系背景,这可能看起来效率低下 - 但 Cloudant 没有传统意义上的联接,原子单元是文档。