Не создавайте отдельный документ для каждого представления, если вам это не нужно.
Вы можете вырезать незначительную часть даты, сохранить только день + час или только день и использовать $inc
чтобы добавить новое представление:
db.hits.update(
{"item": "image0001", "date": ..dayordayandhour..},
{"$inc": { "hits": 1}},
true) //upsert
Для агрегации, которую вы можете использовать group
, mapreduce является излишним для этого.
Примечание: Есливам не нужны точные числа, вы можете производить агрегацию ежечасно, а затем обновлять счетчики «этот день» / «эта неделя» (вы можете управлять несколькими счетчиками с помощью этого подхода!) для каждого документа, чтобы вы могли быстро выполнять поиск исортировка по счетчикам просмотров.