我在mongodb数据库中有一组嵌入了测量值的对象。我正在尝试使用map / reduce来获取有关测量的统计数据。我遇到了一些问题,所以我只是尽可能地简单:获得每个问题的测量数量。
m = function() {
emit (mp, { meas: this.measurements });
};
r = function() {
return { count: meas.length };
};
res = db.meas_points.mapReduce(m, r,
{query : { measurements : {$exists: true}}},
{out: { "measurements_stats" }} );
当我运行此查询时出现错误:
Mon Jan 2 16:05:53 SyntaxError: missing : after property id (shell):1
我正试图在我的map / reduce的上下文中看到这意味着什么,但我只是没有看到它。我从mongodb网站(http://www.mongodb.org/display/DOCS/MapReduce Shell示例2)中提取了代码,并根据我的需要进行了调整。好像我正在做的一切正确,但我不断得到这个神秘的错误。我根本没有使用id
字段 - 我有可能是格式错误的记录吗?
答案 0 :(得分:2)
在这一行
return { count: meas.length };
无法解析meas
您需要修改reduce函数的签名。
var r = function(mp, measValues) {
return Array.sum(measValues.length);
};
这里传递给此reduce函数的measValues
本身是一个数组
注意:如果map函数中的mp
是您的集合meas_points的ID /键,则将该行更改为this.mp
答案 1 :(得分:0)
{ "measurements_stats" }
语法无效。
你的意思是阵列吗?