在CouchDB中从多对多关系中获取文档

时间:2014-12-03 16:58:38

标签: couchdb

我有role个文档代表的多对多关系。 user可以在project中包含多个角色(而project可能也有许多不同的用户)。 role基本上是{projectId, userId, roleName}

我有一个使用projectId键发出角色的视图,这使我可以轻松找到特定项目的所有userId,这很棒。但是,现在我也需要有关用户的具体信息。我当然可以迭代用户并单独查询或使用他们的密钥,但我想有一种方法可以在只有一个查询的CouchDB中执行此操作。

如何通过我的角色视图从userId获取用户信息?

1 个答案:

答案 0 :(得分:2)

在CouchDB视图中,您可以发出{“_id”: <userId>}作为视图值。使用include_docs=true查询视图时,CouchDB将返回带有_id: <userId>的文档。所以像

这样的视图功能
function(doc) {
  if(doc.projectId && doc.userId) {
    emit(doc.projectId, {“_id”: doc.userId});
  }
}

可能就是你要找的东西。