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 来说不是最佳方法。
我不太确定我想要实现的目标应该叫什么,但会尽可能多地解释它。我正在尝试使用视图来查看来自像层次结构一样相关的单独文档的 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 中是否可行,或者我是否应该以不同的方式构建我的数据。 (包括最低级别的所有层次结构信息,以便可以向上搜索)。或者大家有什么其他的建议。
谢谢卡勒姆
您似乎试图在视图中包含来自相关文档的信息。在地图功能中,您只能访问当前文档,不能查询数据库中的任何其他文档。
您可以按照这种方法
您的数据结构保持着强烈的关系风格,这对于面向文档的数据库 CouchDB 来说不是最佳方法。