0

我有两种类型的文档(实体)“书”和“作者”。

图书文档样本:{ _id:"123456", name:"Peace and War", pages:"2234", author_id:34567 }

作者文档样本:{ _id:"34567", surname:"Tolstoy", name:"Leo" }

问题是:我如何创建返回以下结构的视图:

{ _id:"123456", name:"和平与战争", pages:"2234", author_id:34567, surname:"Tolstoy", name:"Leo" }

可能吗?

谢谢!

4

1 回答 1

0

一种方法是使用 WPCoder 的想法和include_docs=true查询来获得响应:"value": { book_id:"123456", name:"Peace and War", pages:"2234" }, "doc": {_id:34567, surname:"Tolstoy", name:"Leo" }. 我会那样做。

如果你真的不喜欢include_docs你也可以试试map:

if (doc.author_id) {
  emit([doc.author_id, doc._id], doc);
} else
// check if author
if (doc.surname && doc.name) {
  emit([_id, 0], doc);
}

现在带有选项的查询?startkey=["author id"]&endkey["author id", {}]将返回作者的书籍列表。您可以过滤您的书并将其合并到带有列表的单个对象中,但您必须先验地知道作者(使用关键字而不是作者搜索)。

您也可以使用keys=[["author id", 0], ["author id", "book id"]],但您必须知道作者和书籍 ID。这完全取决于你需要它做什么。我再重复一遍:我会使用 WPCoder 的建议。

于 2012-10-30T08:47:13.877 回答