2012-04-10 2 views
2

У меня есть коллекция в MongoDB, как следующее:Integer в качестве ключа для карты Снизить MongoDB

{_id: {"thread": "abc"}, "value": 1} 
{_id: {"thread": "cdf"}, "value": 1} 
{_id: {"thread": "edf"}, "value": 1} 

Я попытался карту уменьшить пытается ввести на значение, в надежде на выход следующим образом:

{id_: {"value": 1}, value: 3} 

КАРТА:

function() { 
var key = {value : this.value}; 
emit(key, 1); 
}; 

УМЕНЬШИТЬ:

function(key, values) { 
var sum = 0; 
values.forEach(function(value) { 
sum += value;}); 
return sum; 
}; 

EDIT Оранжевый вопрос: Карта Уменьшена работа недействительна. Это была проблема подключения, а не Map Reduce. Спасибо всем за дополнительную информацию.

, к сожалению, это не сработало и дали некоторый вывод следующим образом:

{u'_id': {u'value': None}, u'value': 1160856.0} 

Не можно ли ключ на целочисленное значение ?? Я прочитал карту, уменьшив документацию на Mongodb, но не смог найти информацию, связанную с типом данных ключа.

+0

Какова ваша функция карты/уменьшения? – Thilo

+2

Возможно, недостаток целочисленной поддержки в интерактивной оболочке mongo кусает вас? См. Http://www.mongodb.org/display/DOCS/Overview+-+The+MongoDB+Interactive+Shell#Overview-TheMongoDBInteractiveShell-SomeNotesonDatatypesintheShell – Ondergetekende

+0

@Thilo Я отредактировал этот вопрос и добавил его. – codious

ответ

3

Если вы используете свою карту/сокращение от оболочки MongoDB, вы можете столкнуться с функцией/проблемой (мнения меняются на нее;)), где оболочка преобразует все целочисленные типы в двойные и сохраняет их как таковые. В настоящее время нет реального обходного пути, кроме вызова вашего m/r из чего-то другого, кроме оболочки. Тем не менее, если я запускать м/г я получаю это:

{ 
     "_id" : { 
       "value" : 1 
     }, 
     "value" : 3 
} 

который, кажется, что вы пытаетесь сделать. Я не уверен, что это так. Убедитесь, что вы используете последнюю версию db и т. Д.

+1

Но зачем тогда результат группировать все под «Нет». Должна ли она в основном работать, кроме того, что ключ и счет теперь удваиваются? – Thilo

+0

Im, использующий Python to Map, уменьшает. Есть ли простое решение для m/r в поле значений в качестве ключа? – codious

+0

@ Тило, да, это тоже мой вопрос. – codious

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