Я использую nodejs и MongoDB для базы данныхMongoose агрегация GroupBy на день, неделю,
Мой документ:
{
"_id": "58466d6a0b3f4d2e2fa22905",
"updatedAt": "2016-12-06T07:48:58.435Z",
"createdAt": "2017-12-06T07:48:58.435Z",
"userId": "56d04e265a2100c72a311334",
"__v": 0
}
Пользователь даст FromDate, Todate и частоту в клиентской, в котором значение частоты может быть 0,1,2 где 0 означает день, 1 означает неделю, 2 означает год.
На основании приведенных выше данных я хочу, чтобы генерировать отчет
напр: если пользователь даст FromDate = 2016-12-1 и Todate = 2016-12-6.
, если частота равна 0 результат будет
{
2016-12-01:{
count:1
}
2016-12-02:{
count:7
}
2016-12-06:{
count:8
}
}
, если частота 1 результат будет
{
2016-12-01 to 2016-12-06:{
count:16
}
}
, если частота 2 результат будет
{
2016:{
count:16
}
}
В какой отсчет количество документов
Я сделал так:
var aggregate = [{
$match: {
createdAt: {
$gte: fromDate,
$lt: toDate
}
}
}, {
$group: {
// what should i will do here
},
count: {
$sum: 1
}
}
}]
return LoginReportModel.aggregate(aggregate).exec();
ИЛИ Любой один знаю другой лучший подход, как с помощью lodash также приветствуем
Отредактировано: Я также хотелось бы количество документов быть уникальным на userId
вы можете мне помочь на вышеуказанных проблемах – Sam
я добавил пример, единственное отличие состоит в том, что для частоты 1 выводит номер недели как групповой ключ вместо строки типа «2016-12-01 до 2016-12-06». Надеюсь, поможет! – Rudi
Спасибо за помощь! Эта вещь, которую я также могу достичь с помощью $ dayOfMonth и $ year .., но основная проблема - с неделей. Как я могу преобразовать номер этой недели на сегодняшний день, как я упомянул выше, потому что я hv для записи выше данных в файл excel для создания отчета – Sam