Solución:
Debe utilizar la palabra clave $ mes en su grupo. Tu new Date().getMonth()
la llamada solo ocurrirá una vez e intentará crear un mes a partir de la cadena “$ bookingdatetime”.
db.booking.aggregate([
{$group: {
_id: {$month: "$bookingdatetime"},
numberofbookings: {$sum: 1}
}}
]);
No puede incluir JavaScript arbitrario en su canal de agregación, porque está almacenando bookingdatetime
como un string
en lugar de un Date
no puedes usar el $month
operador.
Sin embargo, debido a que sus cadenas de fecha siguen un formato estricto, puede usar el $substr
operador para extraer el valor del mes de la cadena:
db.test.aggregate([
{$group: {
_id: {$substr: ['$bookingdatetime', 5, 2]},
numberofbookings: {$sum: 1}
}}
])
Salidas:
{
"result" : [
{
"_id" : "03",
"numberofbookings" : 1
},
{
"_id" : "07",
"numberofbookings" : 1
},
{
"_id" : "10",
"numberofbookings" : 1
}
],
"ok" : 1
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)