что означает «отсутствует: после идентификатора свойства» в контексте простой карты / редукции? - PullRequest
2 голосов
/ 03 января 2012

У меня есть набор объектов в базе данных mongodb, в которые встроены измерения.Я пытаюсь сделать карту / уменьшить, чтобы получить статистику об измерениях.Ну, я столкнулся с некоторыми проблемами с этим, поэтому я просто сделал это как можно проще: получить количество измерений для каждого.

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

Я пытаюсь понять, что это значит в контексте моей карты /уменьшить, но я просто не вижу этого.Я взял код с сайта mongodb (http://www.mongodb.org/display/DOCS/MapReduce Shell Example 2) и адаптировал его под свои нужды.Похоже, я все делаю правильно, но я продолжаю получать эту загадочную ошибку.Я вообще не использую поле id - возможно, у меня поврежденная запись или что-то в этом роде?

Ответы [ 2 ]

2 голосов
/ 03 января 2013

В этой строке

return { count: meas.length };

Не удается разрешить meas Вам необходимо изменить сигнатуру функции сокращения.

var r = function(mp, measValues) {
                      return Array.sum(measValues.length);
                  };

Здесь measValues, переданная этой функции сокращения, является массивом

.

Примечание. Если mp в функции карты является идентификатором / ключом вашей коллекции measure_points, измените эту строку на this.mp

0 голосов
/ 03 января 2012

{ "measurements_stats" } неверный синтаксис.

Вы имели в виду массив?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...