Ich bin mit NodeJS und mongodb für DatenbankMongoose Aggregation groupby am Tag, Woche, Jahr
Mein Dokument ist:
{
"_id": "58466d6a0b3f4d2e2fa22905",
"updatedAt": "2016-12-06T07:48:58.435Z",
"createdAt": "2017-12-06T07:48:58.435Z",
"userId": "56d04e265a2100c72a311334",
"__v": 0
}
Benutzer geben VonDatum, toDate und Frequenz in Clientside, in dem Wert Frequenz sei 0,1,2 wo 0 bedeutet Tag, 1 bedeutet Woche, 2 bedeutet Jahr.
Auf Basis von oben Daten möchte ich
für ex Bericht erstellen: Wenn Benutzer geben VonDatum = 2016.12.01 und toDate = 2016.12.06.
wenn Frequenz 0 ist das Ergebnis wäre
{
2016-12-01:{
count:1
}
2016-12-02:{
count:7
}
2016-12-06:{
count:8
}
}
, wenn Frequenz 1 ist das Ergebnis
{
2016-12-01 to 2016-12-06:{
count:16
}
}
sein würde, wenn die Frequenz 2 ist das Ergebnis sei
{
2016:{
count:16
}
}
In welcher Zählung Anzahl der Dokumente
ich so getan habe:
var aggregate = [{
$match: {
createdAt: {
$gte: fromDate,
$lt: toDate
}
}
}, {
$group: {
// what should i will do here
},
count: {
$sum: 1
}
}
}]
return LoginReportModel.aggregate(aggregate).exec();
ODER Jeder weiß, anderen besseren Ansatz wie auch willkommen
mit lodashEditiert: Ich auch möchte, dass die Anzahl der Dokumente auf userId eindeutig ist
können Sie mir helfen, auf dem oberen Problem – Sam
Ich habe ein Beispiel, ist der einzige Unterschied, dass für die Frequenz 1 es die Wochennummer ausgibt als Gruppenschlüssel anstelle einer Zeichenfolge wie "2016-12-01 bis 2016-12-06". Ich hoffe es hilft! – Rudi
Danke für Hilfe! Diese Sache kann ich auch mit $ dayOfMonth und $ year erreichen. Aber das Hauptproblem ist mit der Woche. Wie kann ich diese Woche Nummer umwandeln, wie ich oben erwähnt, weil ich hv über Daten in Excel-Datei schreiben, um Bericht – Sam