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 没有传统意义上的联接,原子单元是文档。
我正在尝试在 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 没有传统意义上的联接,原子单元是文档。