相关疑难解决方法(0)

在CouchDB中进行一对多"JOIN"的最佳方法

我正在寻找一个等同于"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 mapreduce

33
推荐指数
1
解决办法
1万
查看次数

在CouchDB中建模文档层次结构的最佳方法

我正在尝试在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 hierarchical-data

12
推荐指数
1
解决办法
4756
查看次数

"合并"视图排序到CouchDB中的有用输出

在CouchDB中执行"连接"时,可以使用视图排序将记录组合​​在一起.例如,有两种文档类型的客户订单.这样您就可以返回客户,然后是该客户的所有订单,然后是下一个客户和订单.

问题是,如何合并行,这样如果您有10个客户和40个订单,那么您的输出仍然是10行而不是50行.您实际上是在客户行中添加了更多信息.

我相信用一个_list或一个reduce会解决这个问题.问题是如何做到这一点?

reduce couchdb mapreduce

6
推荐指数
2
解决办法
2843
查看次数

标签 统计

couchdb ×3

mapreduce ×2

hierarchical-data ×1

reduce ×1