2012-03-13 3 views
0

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

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

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

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

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

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 коллекции

+0

MapReduce до сих пор производит один и тот же, другой вывод. Так что никакого эффекта нет. Я пытаюсь использовать другую версию mongo, потому что на моей производственной среде она работает: -S – thesonix

+0

mine - версия 2.0.1 – daydreamer

Смежные вопросы