我有以下文件:
{ _id: "123", type: "project", worksite_id: "worksite_1" }
{ _id: "456", type: "document", project_id: "123" }
{ _id: "789", type: "signature", document_id: "456" }
我的目标是运行查询并不可避免地对与 worksite_id: worksite_1
有连接的所有文档进行过滤复制。例子:
如果我想要来自该工作场所的所有内容,我应该能够检索所有这些文件。
通常我只会在我的
worksite_id
和 type:document
中添加一个 type:signature
。但是,由于各种原因,项目中的工地可能会发生变化。我想知道是否有一种方法可以创建索引或做一些我没有考虑过的事情来显示这些相似之处。
This 感觉它在正确的道路上,但解释将文档放在其他文档中,我只是希望它们分开。
最佳答案
map 函数一次只考虑一个文档,因此除非该文档知道其他文档,否则您无法将它们链接在一起。您的结构意味着 SQL 术语中的三表连接。
对于您的结构,您可以期望的最佳解决方案是两个请求的解决方案。您可以创建一个仅显示签名文档的 View :
function (doc) {
if (doc && doc.type && doc.type === "signature" && doc.document_id) {
emit(doc.document_id, {_id: doc.document_id})
}
}
并使用相同的技术,将项目链接到文档——但您无法将所有三个链接。
关于CouchDB 索引以连接文档之间的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53752001/