Mongodb 是否可以从map reduce引擎的finalize方法更新mongo集合?

Mongodb 是否可以从map reduce引擎的finalize方法更新mongo集合?,mongodb,mapreduce,Mongodb,Mapreduce,我尝试将要更新的集合作为范围变量传递-无骰子。 我试图从finalize body调用db.getCollection——没有骰子,我得到了以下结果: db assertion failure, assertion: 'invoke failed: JS Error: TypeError: db has no properties nofile_b:18', assertionCode: 9004 我猜这意味着,db在finalize方法中是未定义的。那么,有可能吗 编辑 以下是我的最终确定方

我尝试将要更新的集合作为范围变量传递-无骰子。 我试图从finalize body调用
db.getCollection
——没有骰子,我得到了以下结果:

db assertion failure, assertion: 'invoke failed: JS Error: TypeError: db has no properties nofile_b:18', assertionCode: 9004
我猜这意味着,
db
在finalize方法中是未定义的。那么,有可能吗

编辑

以下是我的最终确定方法:

函数(键、值){
函数展平(值、收集器){
var项目=价值;
if(!(数组的值实例)){
如果(!value.items){
收集器。推送(值);
返回;
}
items=value.items;
}
对于(变量i=0;i

我想将收集器.push(value)
替换为insert into some collection。

无法从Map/Reduce/Finalize函数内部修改另一个集合

下面是一个链接,指向用户提出的类似问题。不幸的是,答案是“否”。

部分原因是MapReduce设计用于分片环境。计算分布在不同的碎片中,然后将结果聚合。如果允许在每个碎片上运行的每个函数修改集合,那么每个碎片最终可能会得到不同的数据

如果希望单独的集合作为Map Reduce操作的结果进行修改,最好的策略是运行Map Reduce操作,获取结果,然后让应用程序更新单独的集合

如果希望合并多个Map Reduce操作的结果,可以通过增量Map Reduce进行合并。有关这方面的文档可在此处找到: