gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:46:22 24 4
gpt4 key购买 nike

我试图将要更新的集合作为范围变量传递 - 没有骰子。我试图从终结体调用 db.getCollection - 没有骰子,我明白了:

db assertion failure, assertion: 'invoke failed: JS Error: TypeError: db has no properties nofile_b:18', assertionCode: 9004

我猜这意味着 db 在 finalize 方法中未定义。那么,这可能吗?

编辑

这是我的终结方法:

function(key, value) {
function flatten(value, collector) {
var items = value;
if (!(value instanceof Array)) {
if (!value.items) {
collector.push(value);
return;
}

items = value.items;
}
for (var i = 0; i < items.length && collector.length < max_group_size; ++i) {
flatten(items[i], collector);
}
}

var collector = [];
flatten(value, collector);
return collector;
}

我想用插入到某个集合中替换 collector.push(value)

最佳答案

不可能从 Map/Reduce/Finalize 函数内部修改另一个集合。

这是一个链接,指向有类似问题的用户的问题。不幸的是,答案是否定的。
How to change the structure of MongoDB's map-reduce results?

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

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

如果您希望合并多个 Map Reduce 操作的结果,可以通过增量 Map Reduce 来实现。有关这方面的文档可在此处找到:http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-IncrementalMapreduce

关于mongodb - 是否可以从 map reduce 引擎的 finalize 方法更新 mongo 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10007379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com