我知道这已经在互联网上被问过无数次了,但我无法弄清楚这里发生了什么,而且我已经把头撞在墙上好几个小时了。
这有效:
in myscript.js :
obj = 'hello';
var f = function() {
printjson('obj=' + obj);
}
f();
$ mongo myscript.js
obj=你好
这不起作用:
date1 = "2013-09-03T00:00:00Z";
date2 = "2013-09-04T00:00:00Z";
var mapIntensities = function() {
emit(this.unit, this.intensity);
};
var reduceIntensities = function(unit, intensities) {
return {date: date1, "unit": unit, "intensity": Array.sum(intensities)};
};
db.units.mapReduce(mapIntensities, reduceIntensities, {out: "aggregate_intensities", query: {"DATE": {$gte: ISODate(date1), $lt: ISODate(date2)}}})
这是为什么 ?问题出现在 reduce() 函数中(如果只是在那里我用它工作的硬编码值替换 date1)
它是否特定于 mongodb 的 mapreduce 方式?(如工作示例所示)