gpt4 book ai didi

node.js - MapReduce 中的 MongoDB 动态变量

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

我有用于 mongodb mapreduce 的 node.js 路由器:

app.get('/api/facets/:collection/:groupby', function(req, res) {
var collection = db.collection(req.params.collection);
var groupby = req.params.groupby;
var map = function() {
if (!this.region) {
return;
}
for (index in this.region) {
emit(this.region[index], 1);
}
}
var reduce = function(previous, current) {
var count = 0;

for (index in current) {
count += current[index];
}
return count;
}
var options = {out: groupby + '_facets'};
collection.mapReduce(map, reduce, options, function (err, collection) {
collection.find(function (err, cursor) {
cursor.toArray(function (err, results) {
res.send(results);
});
})
})
});

这很好用。但我想使用我的 groupby 参数。当我尝试做这样的事情时:

  var map = function() {
if (!this[groupby]) {
return;
}
for (index in this[groupby]) {
emit(this[groupby][index], 1);
}
}

我收到 TypeError: Cannot call method 'find' of undefined。有什么方法可以创建这样的动态 mapreduce 函数吗?

谢谢。

已编辑:

哇!我自己做。只需将 scope 参数传递给 mapreduce 参数,就像这样 scope:{keys: groupby} 然后我就可以做 var key = this[keys] 在 map 函数中并使用 key 变量代替 this.region。太棒了!

最佳答案

哇!我自己解决了。我刚刚将一个范围参数传递给了 mapreduce 参数。

scope:{keys: groupby} 

然后我就可以做

var key = this[keys] 

在 map 函数中使用 key 变量而不是 this.region。太棒了!

关于node.js - MapReduce 中的 MongoDB 动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15484486/

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