これはインターネット上で数え切れないほど質問されていることは知っていますが、ここで何が起こっているのか理解できず、何時間も頭を壁にぶつけています.
これは機能します:
in myscript.js :
obj = 'hello';
var f = function() {
printjson('obj=' + obj);
}
f();
$ mongo myscript.js
obj=hello
これは機能しません:
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 をハードコードされた値に置き換えれば機能します)
mapreduce を行うmongodbの方法に固有のものですか? (実際の例が示唆するように)