我不太确定该如何称呼我想要达到的目标,但是会尽可能多地解释它。我正在尝试使用视图从诸如层次结构等相关的单独文档中返回信息。例如,我有这三个文档。
{
"_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中是否可以使用这种功能,或者是否应该以不同的方式构造数据。 (在最低级别包括所有层次结构信息,以便可以向上搜索)。或者,如果有人有其他建议。
感谢卡勒姆
答案 0 :(得分:1)
您似乎正在尝试将相关文档中的信息包括在视图中。在地图功能中,您只能访问当前文档,而不能在数据库中查询任何其他文档。
遵循这种方法see,您可以获得一种“联接”功能。
您的数据结构保持着强烈的关系风格,对于面向文档的数据库CouchDB来说,这可能不是最好的方法。