CouchDB 多级视图地图功能?

Posted

技术标签:

【中文标题】CouchDB 多级视图地图功能?【英文标题】:CouchDB multi level view map function? 【发布时间】:2019-01-21 04:14:41 【问题描述】:

我不太确定我要实现的目标是什么,但我会尽可能多地解释它。我正在尝试使用视图从像层次结构一样相关的单独文档中返回信息。比如我有这三个文件。


  "_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",

我希望能够创建一个视图,允许根据 Line id 从 Book 中查找信息。(多级层次结构)。

例如,View Map 函数是这样的。

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 中实现,或者我是否应该以不同的方式构建我的数据。 (包括最低级别的所有层次结构信息,以便向上搜索)。或者如果有人有任何其他建议。

感谢卡勒姆

【问题讨论】:

【参考方案1】:

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

您可以按照这种方法see 获得一种“加入”功能。

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

【讨论】:

感谢 Juanjo,链接的问题帮助我弄清楚如何实现我正在寻找的东西。我的实际数据并不像上面显示的那样具有关系,但这是我能想到的最简单的例子。我发现链接答案danielwertheim.se/couchdb-many-to-many-relations 中给出的这个链接作为示例实现非常有用。

以上是关于CouchDB 多级视图地图功能?的主要内容,如果未能解决你的问题,请参考以下文章

来自 Ektorp 的 CouchDB Map/Reduce 视图查询

在 Couchdb 中订购

CouchDB 视图 - 列表功能性能受到影响?

在 CouchDB 中链接文档

CouchDB 为行键返回无(减少功能)

如何在 CouchDB 中创建 Erlang 视图