CouchDB 索引以连接文档之间的点

标签 couchdb pouchdb cloudant couchdb-2.0 couchdb-mango

我有以下文件:

{ _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_idtype: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/

    相关文章:

    javascript - 如何实现安全且同步的客户端到服务器连接

    javascript - PouchDB 和 React-Native 不复制 .to() 但 .from() 正在工作

    javascript - JS等待回调在for循环内完成执行

    couchdb - 使用 Ektorp ExecuteBulk () 和 ExecuteAllOrNothing () API 在 Cloudant CouchDB 中执行批量更新时出错

    node.js - 在 Node.js 的查询字符串中传递数组

    document - CouchDB 中地址簿的最佳文档格式

    angularjs - 将 angularjs 和 node.js 后端与 Cloudant DB 搜索 API 结合使用

    java - 如何使用java在cloudant上查询搜索索引?

    javascript - CouchApp 与 Node.js

    react-native - 自定义邮袋错误