У меня есть простая коллекция элементов со следующей структурой:
{
_id: MongoId
pvs: int
day: IsoDate()
uid: int
}
Я хотел бы использовать MapReduce
для подсчета просмотров страниц для данного пользователя, сгруппированных по определенному диапазону дат (день/неделя/месяц, дата format
совместима).
Что я застрял, так это то, как переформатировать IsoDate
в функции карты, используя $dateToString
перед отправкой, чтобы она выдавала нужный мне формат, например %Y-%m-%d
или %Y-%m
или %Y-%m-%U
. Когда я его вызываю, я получаю не переформатированную дату, а объект с полями format
и date
.
Пример:
function(){
emit(
{'$dateToString': {'format': "%Y-%m-%d", 'date': this.day}},
this.pvs
)}
вернется
{
"pvs" : 5
"$dateToString" : {
"format" : "%Y-%m-%d",
"date" : ISODate("2016-07-13T08:27:29.000Z")
}
}
Вместо этого я хочу вернуть это:
{
"pvs": 5,
"day": "2016-07-13"
}
$dateToString
, а также эффективная агрегация по сравнению с mapReduce? - person chridam   schedule 01.09.2016doctrine mongo odm
, что позволяет мне звонить толькоmapReduce
(я знаю, глупо). А еще я хотел бы решить этот вопрос, просто чтобы чему-то научиться. - person ex3v   schedule 01.09.2016