CouchDB 多级视图映射函数?

CouchDB multi level view map function?

我不太确定我想要实现的目标应该叫什么,但会尽可能多地解释它。我正在尝试使用视图来查看来自像层次结构一样相关的单独文档的 return 信息。比如我有这三个文件。

{
  "_id" : "line_2c7e12d1",
  "docType" : "Line",
  "lineNumber": 30,
  "pageId" : "page_89bdd679f"
}

{
  "_id" : "page_89bdd679f",
  "docType" : "Page",
  "pageNumber" : 65,
  "bookId" : "book_3684caa2b"
}

{
  "_id" : "book_3684caa2b",
  "docType" : "Book",
  "bookName" : "Some Book Title",
}

而且我希望能够创建一个视图,允许根据行 ID 从图书中查找信息。(多级层次结构)。

例如,查看地图功能就是这样。

function (doc) {
  if(doc.docType == 'Line'){
    emit([doc._id, 1], doc.lineNumber)
    emit([doc._id, 2], {_id : doc.pageId})
    emit([doc._id, 3], {_id : doc.pageId}.pageNumber)
    emit([doc._id, 4], {_id : {_id : doc.pageId}.bookId})
  }
}

我知道前两条发射线工作正常,但后两条不行。我只是想知道这种功能在 CouchDB 中是否可行,或者我是否应该以不同的方式构建我的数据。 (包括最低级别的所有层次结构信息,以便可以向上搜索)。或者大家有什么其他的建议。

谢谢卡勒姆

您似乎试图在视图中包含来自相关文档的信息。在地图功能中,您只能访问当前文档,不能查询数据库中的任何其他文档。

您可以按照这种方法 获得一种 "join" 功能。

您的数据结构保持着强烈的关系风格,这对于面向文档的数据库 CouchDB 来说不是最佳方法。