Ich versuche, eine Abfrage abzuleiten, um eine Anzahl unterschiedlicher Werte zu erhalten und die relevanten Felder anzuzeigen. Die Gruppierung erfolgt über die und die date
, wobei die one-to-many
mal innerhalb eines einzigen Tages und innerhalb eines Zeitrahmens auftreten kann.Bestimmte Vorkommen gruppieren und zählen
folgende ist mein Ansatz,
db.getCollection('targetCollection').aggregate(
{
$match:{
"user.vendor": 'vendor1',
tool: "tool1",
date: {
"$gte": ISODate("2016-04-01"),
"$lt": ISODate("2016-04-04")
}
}
},
{
$group:{
_id: {
tempId: '$tempId',
month: { $month: "$date" },
day: { $dayOfMonth: "$date" },
year: { $year: "$date" }
},
count: {$sum : 1}
}
},
{
$group:{
_id: 1,
count: {$sum : 1}
}
})
Diese Abfrage erzeugt die folgende Ausgabe,
{
"_id" : 1,
"count" : 107
}
Was ist richtig aber ist, ich mag sie nach Datum und mit der jeweiligen Zählung getrennt zeigen, für dieses Datum. Zum Beispiel so etwas,
{
"date" : 2016-04-01
"count" : 50
},
{
"date" : 2016-04-02
"count" : 30
},
{
"date" : 2016-04-03
"count" : 27
}
P.S. Ich bin nicht sicher, wie ich diese Frage zusammenstellen soll, da ich mit dieser Technologie ziemlich neu bin. Bitte lassen Sie mich wissen, wenn Verbesserungen in der Frage erforderlich sind.
Es folgt die Probendaten der mongodb Sammlung, die ich abfragen versuche,
{
"_id" : 1,
"tempId" : "temp1",
"user" : {
"_id" : "user1",
"email" : "[email protected]",
"vendor" : "vendor1"
},
"tool" : "tool1",
"date" : ISODate("2016-03-09T08:30:42.403Z")
},...
Danke für die Antwort, aber die 'tempId' muss berücksichtigt werden. Die Abfrage, die ich ableiten möchte, besteht darin, für jeden Tag innerhalb des angegebenen Datumsbereichs die "Anzahl" jeder ** distinct ** "tempId" zu ermitteln. Ich habe die Frage aktualisiert. :) –
@HasithaShan siehe Update – kiro112
Hey danke, aber ich denke, es ist näher, aber es ist das gleiche wie ich. Das Datum sollte so gemacht werden, wie ich es getan habe, weil der Zeitstempel Sekunden enthält, also Gruppierung, die sowieso eine Intention geben würde. Ich muss die ** Gesamtzählung ** der ** distinct ** 'tempId's für jeden Tag erhalten. –