Данные в коллекции выглядит следующим образом:MongoDB Map-Reduce
[{
_id: 0001,
imei:'123456',
apps:[{packageName:'google'},{packageName:'twitter'}]
},{
_id: 0002,
imei:'654321',
apps:[{packageName:'facebook'},{packageName:'twitter'}
}]
я хотел бы вычислить PACKAGENAME и IMEI пользователя, так же, как это:
[{
packageName:'facebook',
imeis:['123456']
},{
packageName:'google',
imeis:['123456','654321']
},{
packageName:'twitter',
imeis:['123456','654321']
}]
моя функция карта:
function(){
emit(this.packageName,this.imei);
};
уменьшить функции является:
function(key , values){
var ret = {packageName:key,imeis:values};
return ret;
};
Но результат только PACKAGENAME, imeis является нулевым
может быть функция карта была неправильно, но я не знаю, как переписать его.
Я новичок в MongoDB .please дать мне несколько советов, ТНХ
спасибо, очень большое спасибо, но – Merlin
очень благодарен, он может работать, но если я сканю всю коллекцию, mongo покажу мне сообщение msg: 'exception: Превышено ограничение памяти для $ group, но не разрешено внешняя сортировка , Pass allowDiskUse: true для выбора. – Merlin
@Merlin отредактировал мой ответ –