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 多级视图地图功能?的主要内容,如果未能解决你的问题,请参考以下文章