Dies ist, wie meine Sammlung Struktur wie folgt aussieht:Gruppe und die Summe von Tag zu Tag
{
"_id" : ObjectId("57589d2a9108dace306602b8"),
"IDproject" : NumberLong(53),
"email" : "[email protected]",
"dc" : ISODate("2016-06-06T22:33:13.000Z")
}
{
"_id" : ObjectId("57589d2a9108dace306602b8"),
"IDproject" : NumberLong(53),
"email" : "[email protected]",
"dc" : ISODate("2016-06-07T22:33:13.000Z")
}
{
"_id" : ObjectId("57589d2a9108dace306602b8"),
"IDproject" : NumberLong(53),
"email" : "[email protected]",
"dc" : ISODate("2016-06-078T22:33:13.000Z")
}
Wie Sie sehen können, gibt es zwei Kunden am 7. Juni und einer am 6. Juni aufgenommen. Ich möchte diese Ergebnisse für die letzten 30 Tage gruppieren und zusammenfassen.
Es sollte etwa wie folgt aussieht:
{
"dc" : "2016-06-05"
"total" : 0
}
{
"dc" : "2016-06-06"
"total" : 1
}
{
"dc" : "2016-06-07"
"total" : 2
}
Wie können Sie sehen, es gibt keine Aufzeichnungen am 6. Juni, so ist es Null. Es sollte Null für 5. Juni usw.
sein, dass der Fall # 1, und der Fall # 2 folgende Ergebnisse würden:
{
"dc" : "2016-06-05"
"total" : 0
}
{
"dc" : "2016-06-06"
"total" : 1
}
{
"dc" : "2016-06-07"
"total" : 3
}
Ich habe versucht, dies:
db.getCollection('customer').aggregate([
{$match : { IDproject : 53}},
{ $group: { _id: "$dc", total: { $sum: "$dc" } } }, ]);
Aber scheint kompliziert. Ich arbeite das erste Mal mit der NoSQL-Datenbank.
Danke.
Okay. Das ist viel besser: 'db.getCollection ('Kunde'). Aggregat ([ {$ Übereinstimmung: {IDproject: 53}}, {$ Gruppe: {_id:" $ dc ", total: {$ Summe : 1}}}, ]); ' Nur müssen Sie herausfinden, wie Sie eine Null zur Gesamtzahl hinzufügen, und erhalten Sie nur die letzten 30 Tage, aber Fall 2 # ist immer noch da. – Nedim
Warum interessieren Sie sich für die Tage in den letzten 30 Tagen, in denen es keine Aufzeichnungen gibt? – styvane
Weil ich das auf dem Graphen zeigen muss. – Nedim