Mapreduce 如何编写CouchDb视图?
我的couchDB数据库中有这样的文档列表Mapreduce 如何编写CouchDb视图?,mapreduce,couchdb,Mapreduce,Couchdb,我的couchDB数据库中有这样的文档列表 { "_id": "9", "_rev": "1-f5a9a0b76c6ae1fe5e20f1a1f9e6f8ba", "Project": "Vaibhava", "Type": "activity", "Name": "Civil_Clearence", "PercentComplete": "", "DateAndTime": "", "SourcePMSId": "1049", "Progr
{
"_id": "9",
"_rev": "1-f5a9a0b76c6ae1fe5e20f1a1f9e6f8ba",
"Project": "Vaibhava",
"Type": "activity",
"Name": "Civil_Clearence",
"PercentComplete": "",
"DateAndTime": "",
"SourcePMSId": "1049",
"ProgressUpdatedToPMSFlag": "NO",
"UserId": "Kundan",
"ParentId": "5"
}
如何编写视图函数,以便在我将
文档作为密钥传递时,必须获得该文档的所有同级。\u id
(父id与我发送的密钥相同的文档)?不幸的是,您需要将两个map reduce函数链接在一起以实现此结果,而该功能在CouchDB中不可用。有关更多信息,请参阅。正如另一个答案中所述,单次请求是不可能做到这一点的
但是,您可以执行以下操作:
定义一个映射(不带reduce)视图,该视图索引于ParentID
:
function(o) {
if (o.ParentID) {
emit(o.ParentID);
}
}
向对象发送第一个请求以了解其父对象的ID:
GET /myDatabase/myObject
然后向您的视图发送请求
GET /myDatabase/_design/myApp/_view/myView/?key="itsParent"&include_docs=true
有几个请求在这里不会造成太大的伤害,因为它们的数量(2)是恒定的。
此外,您还可以将它们隐藏在NodeJS处理的单个请求后面。在wiki中查看关于