我正在寻找一个等同于"SQL连接"的CouchDB.
在我的示例中,有些CouchDB文档是列表元素:
{ "type" : "el", "id" : "1", "content" : "first" }
{ "type" : "el", "id" : "2", "content" : "second" }
{ "type" : "el", "id" : "3", "content" : "third" }
Run Code Online (Sandbox Code Playgroud)
有一个文档定义了列表:
{ "type" : "list", "elements" : ["2","1"] , "id" : "abc123" }
Run Code Online (Sandbox Code Playgroud)
如您所见,第三个元素已被删除,它不再是列表的一部分.所以它不能成为结果的一部分.现在我想要一个返回内容元素的视图,包括正确的顺序.
结果可能是:
{ "content" : ["second", "first"] }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,元素的顺序已经是应该的.另一个可能的结果
{ "content" : [{"content" : "first", "order" : 2},{"content" : "second", "order" : 1}] }
Run Code Online (Sandbox Code Playgroud)
我开始编写地图功能:
map = function (doc) {
if (doc.type …Run Code Online (Sandbox Code Playgroud) 我正在尝试在CouchDB中对文档进行建模以在我的系统中使用,这在概念上类似于博客.每篇博文都属于至少一个类别,每个类别可以有很多帖子.分类是分层的,这意味着如果一个专属于中CatB层次结构中的" CATA - > 中CatB "("中CatB在CATA)",它也属于CATA.
用户必须能够快速查找某个类别(及其所有子级)中的所有帖子.
解决方案1 post类型的每个文档都包含一个"category"数组,表示它在层次结构中的位置(参见2).
{
"_id": "8e7a440862347a22f4a1b2ca7f000e83",
"type": "post",
"author": "dexter",
"title": "Hello",
"category":["OO","Programming","C++"]
}
Run Code Online (Sandbox Code Playgroud)
解决方案2 post类型的每个文档都包含表示层次结构中路径的"category"字符串(参见4).
{
"_id": "8e7a440862347a22f4a1b2ca7f000e83",
"type": "post",
"author": "dexter",
"title": "Hello",
"category": "OO/Programming/C++"
}
Run Code Online (Sandbox Code Playgroud)
解决方案3 post类型的每个文档都包含其父类"category"id,表示其在层次结构中的路径(参见3).通过链接的"类别"文档类型构建分层类别结构.
{
"_id": "8e7a440862347a22f4a1b2ca7f000e83",
"type": "post",
"author": "dexter",
"title": "Hello",
"category_id": "3"
}
{
"_id": "1",
"type": "category",
"name": "OO"
}
{
"_id": "2",
"type": "category",
"name": "Programming",
"parent": "1"
}
{
"_id": …Run Code Online (Sandbox Code Playgroud) 在CouchDB中执行"连接"时,可以使用视图排序将记录组合在一起.例如,有两种文档类型的客户和订单.这样您就可以返回客户,然后是该客户的所有订单,然后是下一个客户和订单.
问题是,如何合并行,这样如果您有10个客户和40个订单,那么您的输出仍然是10行而不是50行.您实际上是在客户行中添加了更多信息.
我相信用一个_list或一个reduce会解决这个问题.问题是如何做到这一点?