在couchdb中编写映射函数,将另一个文档插入到文档中

在couchdb中编写映射函数,将另一个文档插入到文档中,couchdb,Couchdb,我的CouchDB数据库中有两种类型的文档(doc.doc\u type==doc1和doc.doc\u type==doc2) doc1的结构如下所示: { _id: 123123, _rev:1251231, doc_type: doc1, uid: 1 } { _id: 123123, _rev:1251231, doc_type: doc2, uid: 1 docid: 1 } 文档2的结构如下所示

我的CouchDB数据库中有两种类型的文档(doc.doc\u type==doc1和doc.doc\u type==doc2)

doc1的结构如下所示:

{
    _id: 123123,
    _rev:1251231,
    doc_type: doc1,
    uid: 1
}
 {
     _id: 123123,
     _rev:1251231,
     doc_type: doc2,
     uid: 1
     docid: 1
 }
文档2的结构如下所示:

{
    _id: 123123,
    _rev:1251231,
    doc_type: doc1,
    uid: 1
}
 {
     _id: 123123,
     _rev:1251231,
     doc_type: doc2,
     uid: 1
     docid: 1
 }
我想编写一个视图,在该视图中,我整理了doc_类型为doc1的所有文档,但通过映射函数将doc2作为数组插入doc1中

我编写了一个这样的映射函数,但它似乎不起作用:

function(doc) {
    var d = []
    if (doc.doc_type == "doc2") {
        d.push(doc)
    }
    if (doc.doc_type == "doc1") {
        var d1 = d.filter(d => {d.uid == doc.uid})
        doc['doc2'] = d1
    }
    emit(doc._id, doc)
}

但这是一个错误。CouchDB是否识别过滤器和映射?我的备选方案是什么?

您的javascript太现代了(没有
=>
)。但是我想你误解了地图的工作原理——它只会被传递一个文档,所以你没有什么可以过滤的。如果您有一个
doc1
d
数组将始终为空。

CouchDB 3.1应该支持现代JS。