Я работаю с собственным драйвером Mongodb, используя функцию уменьшения карты.В основном, у меня есть mediaId в качестве ключа и я хочу подсчитать, сколько носителей загружено и запущено на mediaId.Итак, я сделал следующее:
var map = function(){
emit(this.media.id, {
count: 1,
played: 0,
ph: this.project.id,
title: this.media.title,
media: this.media.id,
origin: this.origin,
thumbnail: this.media.thumbnail,
mediaDuration: this.media.mediaDuration,
state: this.state
});
};
var reduce = function(k, vals) {
result = {
count: 0,
played: 0,
ph: '',
title: '',
media: '',
origin: '',
thumbnail: '',
mediaDuration: 0,
state: ''
};
vals.forEach(function(doc){
result.count += doc.count;
result.ph = doc.ph;
result.title = doc.title;
result.media = doc.media;
result.thumbnail = doc.thumbnail;
result.mediaDuration = doc.mediaDuration;
result.state = doc.state;
result.origin = doc.origin;
if(doc.state === "started") {
result.played += 1;
}
});
return result;
};
В моей тестовой коллекции у меня есть 2 разных идентификатора носителя.Один с 553 объектами, а другой только с 1 объектом.Я поставил все в состояние «запущено», чтобы проверить это, поэтому в основном количество отсчетов должно быть равно количеству сыгранных.Когда я запускаю функцию Map / Reduce, она возвращается ко мне (я использовал функцию «toArray» собственного драйвера mongodb):
[ { _id: '12398asdsa9802193810asd120',
value:
{ count: 1,
played: 0,
ph: '123213ased12231',
title: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
media: '1xxxxxxxxxxxxxxxxxxxxxxxxxxx1',
origin: 'http://www.google.com',
thumbnail: 'http://cache.ohinternet.com/images/0/0e/Forever_Alone.png',
mediaDuration: 12321321,
state: 'started' } },
{ _id: '2c9f94b42f5b5114012f5b92ea430066',
value:
{ count: 553,
played: 155,
ph: '316',
title: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
media: '2xxxxxxxxxxxxxxxxxxxxxxxxxxx2',
origin: 'http://localhost:9000/views/index.html',
thumbnail: null,
mediaDuration: null,
state: 'started' } } ]
Кажется, что у меня есть только один объект, функция сокращения не является 'Я позвонил (я провел несколько тестов с другой коллекцией с более чем 100 медиа-идентификаторами, и поведение было идентичным. Кто-нибудь имеет представление о том, что с этим не так?
Большое спасибо за ваше время, Cheers.