3

我的 couchDB 数据库中有此类文档的列表。

{
   "_id": "9",
   "_rev": "1-f5a9a0b76c6ae1fe5e20f1a1f9e6f8ba",
   "Project": "Vaibhava",
   "Type": "activity",
   "Name": "Civil_Clearence",
   "PercentComplete": "",
   "DateAndTime": "",
   "SourcePMSId": "1049",
   "ProgressUpdatedToPMSFlag": "NO",
   "UserId": "Kundan",
   "ParentId": "5"
}

如何编写一个视图函数,以便当我将 adoc._id作为密钥传递时,我必须获取它的所有兄弟姐妹doc._id(ParentId 与我发送的密钥相同的文档)?

4

2 回答 2

1

正如另一个答案中所说,不可能通过单个请求来做到这一点。

但是,您可以改为执行以下操作:

  1. 定义索引的地图(没有减少)视图ParentID

    function(o) {
      if (o.ParentID) {
        emit(o.ParentID);
      }
    }
    
  2. 向您的对象发送第一个请求以了解其父对象的 ID:

    GET /myDatabase/myObject
    
  3. 然后向您的视图发送请求

    GET /myDatabase/_design/myApp/_view/myView/?key="itsParent"&include_docs=true
    

有几个请求在这里应该不会造成太大的伤害,因为它们的数量 (2) 是恒定的。此外,您可以将它们隐藏在 NodeJS 处理的单个请求后面。

于 2013-03-18T14:41:37.920 回答
0

不幸的是,您需要将两个 map-reduce 函数链接在一起才能实现此结果,而 CouchDB 中没有该功能。有关更多信息,请参阅此问题

于 2013-03-18T08:10:46.587 回答