如何在一个请求中显示这样的CouchDB复杂输出?

如何在一个请求中显示这样的CouchDB复杂输出?,couchdb,couchbase,Couchdb,Couchbase,我只是couchdb的初学者,所以我的观点可能会被误解,所以你可以和我一起教学和讨论 文件类型 -使用者 -话题 -评论 要求 -我想要一块冲浪板 -1请求获取此复杂文档 输出我需要的键“主题id”,值{ _id:“主题id”,创建于:“2011-05-30 19:50:22”,标题:“你好 世界”,用户:{u id: “用户-1”,类型:“用户”,用户名:“dominixz”,签名:http://dominixz.com"} 评论:[{u id:“评论-1”,文本:“评论1”,创建于:“201

我只是couchdb的初学者,所以我的观点可能会被误解,所以你可以和我一起教学和讨论

文件类型 -使用者 -话题 -评论

要求 -我想要一块冲浪板 -1请求获取此复杂文档

输出我需要的键“主题id”,值{ _id:“主题id”,创建于:“2011-05-30 19:50:22”,标题:“你好 世界”,用户:{u id: “用户-1”,类型:“用户”,用户名:“dominixz”,签名:http://dominixz.com"} 评论:[{u id:“评论-1”,文本:“评论1”,创建于:“2011-05-30 19:50:22“,用户:{u id: “用户-1”,类型:“用户”,用户名:“dominixz”,签名:http://dominixz.com"}}, {u id:“评论-2”,文本:“评论2”,创建于:“2011-05-30 19:50:23“,用户:{u id: “用户-2”,类型:“用户”,用户名:“dominixz2”,签名:http://dominixz1.com"}}, {u id:“评论-3”,文本:“评论3”,创建于:“2011-05-30 19:50:24“,用户:{u id: “用户-3”,类型:“用户”,用户名:“dominixz3”,签名:http://dominixz2.com"}}, ]}

我有这样的“用户”数据 {u id:“user-1”,类型:“user”,用户名:“dominixz”,签名:http://dominixz.com"} {u id:“user-2”,类型:“user”,用户名:“dominixz2”,签名:http://dominixz1.com"} {{u id:“user-3”,类型:“user”,用户名:“dominixz3”,签名:http://dominixz2.com“}

“主题”数据如{u id:“主题id”,创建于:“2011-05-30 19:50:22”,标题:“Hello World”,用户:“user-1”}

像这样的“Comment”数据{u id:“Comment-1”,键入:“Comment”, 文本:“评论1”,创建于:“2011-05-30 19:50:22”,用户:“用户1”, 主题:“主题id”}{U id:“评论-2”,键入:“评论”,文本:“评论2”, 创建于:“2011-05-30 19:50:23”,用户:“用户-2”,主题:“主题id”} {u id:“comment-3”,类型:“comment”,文本:“comment 3”, 创建于:“2011-05-30 19:50:24”,用户:“用户-3”,主题:“主题id”}

如何编写映射、减少、列表来实现这些复杂的数据?如果我想用极限,偏移量,比如db,怎么样


提前感谢

CouchDB是一个文档数据库,而不是关系数据库。因此,它最适合处理包含所有相关数据的文档。虽然您可以像以前一样规范化模式关系样式,但我认为这并不是coach的最佳用例

如果我在沙发上设计你的CMS,我会把主题、内容和评论都放在一个文档中。这将直接解决你的问题


当然,您可以自由地使用文档存储来模拟关系数据库,但这不是它们的自然用例,这会导致类似这样的问题。

CouchDB是一个文档数据库,而不是关系数据库。因此,它最适合处理包含所有相关数据的文档。虽然您可以像以前一样规范化模式关系样式,但我认为这并不是coach的最佳用例

如果我在沙发上设计你的CMS,我会把主题、内容和评论都放在一个文档中。这将直接解决你的问题


当然,您可以自由地使用文档存储来模拟关系数据库,但这不是它们的自然使用情形,这导致了类似这样的问题。

很难说您在这里想要什么,但我认为您要求的是中所述的经典CouchDB连接

我建议你通读整本书,但其中的妙语看起来是这样的(翻译成你的数据):


该映射将返回主题ID,后跟按时间顺序排列的所有注释。
null
可以防止索引变得太大,您可以随时根据请求添加
include_docs=true
以在需要时提取完整的文档,或者您可以使用索引最佳做法,包括其中感兴趣的位。

很难说出您在这里寻找的是什么,但我认为您要求的是一个经典的CouchDB连接,如中所述

我建议你通读整本书,但其中的妙语看起来是这样的(翻译成你的数据):


该映射将返回主题ID,后跟按时间顺序排列的所有注释。
null
可以防止索引变得太大,您可以随时根据请求添加
include_docs=true
以在需要时提取完整的文档,或者您可以使用索引最佳做法,包括其中感兴趣的位。

您能更好地格式化like吗?您能格式化like吗,更好吗?不建议将评论直接存储在他们指向的文档上。这是大多数couchdb教程(和书籍)中的经典博客文章/博客评论示例。如果您直接在原始文档上添加评论,您a)大大降低了冲突的可能性,b)走上了一条流行帖子是无法管理的大文档的道路。不建议将评论直接存储在它们指向的文档上。这是大多数couchdb教程中的经典博客帖子/博客评论示例(和书籍)。如果你直接在原始文档上发表评论,你a)大大降低了冲突的可能性,b)走上了一条流行帖子是无法管理的大文档的道路。
function (doc) {
    if (doc.type === 'topic') {
        emit([doc._id, 0, doc.created_at], null);
    } else if (doc.type === 'comment') {
        emit([doc._id, 1, doc.created_at], null);
    }
}