0
Ich versuche eine Gruppe zu erstellen, indem ich ein ID-Feld, ein Datetime-Feld verwende und die Summe der Werte und das Datumsfeld projiziere.
db.getCollection('driver_collections').aggregate([
{$group : { _id: {driverid:"$driver_id",day:{ $dayOfMonth: "$time_in"},
month:{$month:"$time_in"},year:{$year:"$time_in"}},
amountCollected : {$sum:"$total_collection"}}
},{
$project: {
yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$time_in" }},
amountCollected : 1
}
}])
ich obige Abfrage verwendet und erhielt das Ergebnis als
{
"_id" : {
"driverid" : "58014ce1f39e0f9dc40000b2",
"day" : 30,
"month" : 10,
"year" : 2016
},
"amountCollected" : 2094.0,
"yearMonthDay" : null
}
Ich brauche JahrMonatTag als
"yerMonthDay" zu bekommen: "2016.10.30"
Wenn ich $ dateToString ohne $ Gruppe verwende, funktioniert es gut. Was habe ich hier vermisst.
Es ist, weil Sie das Feld nicht haben 'time_in' in Ihrer unmittelbaren Pipeline nach der' $ Group' Bühne. – chridam