MongoDB Map / Reduce работает только в inline-режиме - PullRequest
0 голосов
/ 13 марта 2012

Я написал функцию map / reduce / finalize, которая отлично работает во время моих тестов с опцией out: {inline: true}. Но если я попытаюсь сохранить результат в коллекции, используя out: {replace: 'test'} (или объединить, ..), это не покажет мне тот же результат.

У кого-нибудь есть подсказка, что я делаю не так?

Thx

Встроенный:

db.runCommand({mapreduce: 'source', map: map_deliverstat, reduce: reduce_deliverstat, finalize: finalize_deliverstat, out: {inline:1}})

{
"_id": {
    "date": ISODate("2012-03-13T00:00:00Z"),
    "customerid": 469
},
"value": {
    "date": ISODate("2012-03-13T00:00:00Z"),
    "customerid": NumberLong(469),
    "sum": 294,
    "nomarker": 42,
    "marker": 252,
    "product1": 34,
    "product2": 22,
    "product3": 20,
    "product4": 19,
    "product5": 16
}
}

Заменить:

db.runCommand({mapreduce: 'source', map: map_deliverstat, reduce: reduce_deliverstat, out: {replace: 'test'}, finalize: finalize_deliverstat})

{
"_id": {
    "date": ISODate("2012-03-13T00:00:00Z"),
    "customerid": 469
},
"value": {
    "date": ISODate("2012-03-13T00:00:00Z"),
    "customerid": NumberLong(469),
    "sum": 2,
    "nomarker": 0,
    "marker": 2,
    "product1": 0,
    "product2": 0,
    "product3": 0,
    "product4": 0,
    "product5": 0
}
}

1 Ответ

1 голос
/ 13 марта 2012

другой способ запуска карты уменьшить, изменить в соответствии с вашими потребностями и посмотреть, если это работает для вас

Следующий запрос подсчитывает количество клиентов группы по состоянию

map = function() {
 emit({state: this.CustomerState}, {count:1})
}

reduce = function(key, values) {
  var count = 0;

  values.forEach(function(v) {
    count += v['count'];
  });

  return {state: key,count: count};
}
db.createCollection('map_temp')
db.customer_info.mapReduce(map, reduce, {out:'map_temp'})

Вы будетесохранить результат в map_temp коллекции

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