if initial contains an attribute whose value is null, an exception will be thrown:
Tue Jun 7 14:57:50 uncaught exception: group command failed:
{ "errmsg" : "exception: reduce invoke failed: JS Error: TypeError: invalid 'in' operand v shell/utils.js:218", "code" : 9010, "ok" : 0 }to reproduce:
> db.mycoll.group({ key: { _id: true }, initial: { a: 0 }, reduce: function(o, p) { } })
[ { "_id.hid" : 360, "a" : 0 } ]
> db.mycoll.group({ key: { _id: true }, initial: { a: null }, reduce: function(o, p) { } })
Tue Jun 7 14:57:50 uncaught exception: group command failed: {
"errmsg" : "exception: reduce invoke failed: JS Error: TypeError: invalid 'in' operand v shell/utils.js:218",
"code" : 9010,
"ok" : 0
}
it would be useful to be able to use an initial attribute with a null value for computing min/max values where the range is not known:
function(o, p) {
if (p.min == null || o.value < p.min) { p.min = o.value; }
if (p.max == null || o.value > p.max) { p.max = o.value; }
... other reduce computations ...
}