Saltar al contenido

MongoDB – agrupar por mes

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *