什么“缺少:属性id后”意味着在简单的map / reduce中?

时间:2012-01-03 00:15:41

标签: mongodb mapreduce

我在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字段 - 我有可能是格式错误的记录吗?

2 个答案:

答案 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" }语法无效。

你的意思是阵列吗?