CouchDB内部连接按文档字段?

时间:2011-01-24 22:01:21

标签: couchdb

我有一个问题,我有两种文件,其中一种是这样的:

{
  "type": "PageType",
  "filename": "demo"
  "content": "zzz"
}

和另一个像这样:

{
  "type": "PageCommentType",
  "refFilename": "demo"
  "content": "some comment content"
}

我需要发出包含.comments字段的文档,该字段是我在条件PageType文档filename == PageCommentType文档refFilename字段上链接的PageCommentType文档数组。

{
  "filename": "demo",
  "comments": [{}, {}, {}]
}

有人对如何实施它有任何建议吗?

谢谢。

1 个答案:

答案 0 :(得分:4)

您需要查看整理。在同一视图中发出,使用filename作为键和类型标识符来区分注释和原始内容:

function(doc) {
  if (doc.type == "PageType") emit([doc.filename,0],doc.content);
  if (doc.type == "PageCommentType") emit[doc.refFilename,1],doc.content);
}

在查找文档demo及其评论时,请使用startkey=["demo",0]endkey=["demo",1]运行查询:您将获得页面内容,然后是所有评论。

如果您拥有所需的所有数据,但它不是正确的格式,那么您几乎已经完成了。只需编写_list函数来读取所有行,并使用您需要的结构/模式输出最终的JSON文档。