es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

MongoDB Agregado, Proyecto y Coincidencia.

He logrado crear una consulta agregada para recuperar registros y su cuenta, agrupados por año.

Mi consulta actual

db.records.aggregate([
        {"$project": {"_id": 0, "date": {"$dateFromString": {"format": "%Y-%m-%d", "dateString": "$when"}}}},
        {"$group": {"_id": {"$year": "$date"}, "count": {"$sum": 1}}},
        {"$sort": {"_id": 1}}
])

Mi colección

{
    "id": "123456", 
    "when": "2021-01-01"
}

¿Cómo modifico mi consulta actual para recuperar todos los registros y su cuenta en un año dado y agruparlo por meses?

Resultado de muestra

[{'_id': 01, 'count': 15}, {'_id': 02, 'count': 53}, {'_id': 03, 'count': 64}, {'_id': 04, 'count': 44}, {'_id': 05, 'count': 42}, {'_id': 06, 'count': 129}, {'_id': 07, 'count': 170}, {'_id': 08, 'count': 148}, {'_id': 09, 'count': 67}, {'_id': 10, 'count': 67}, {'_id': 11, 'count': 67}, {'_id': 12, 'count': 50}]
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede modificar su consulta actual para recuperar todos los registros y su cuenta en un año dado y agruparlos por meses agregando una expresión $month a la etapa $group:

    db.records.aggregate([
            {"$project": {"_id": 0, "date": {"$dateFromString": {"format": "%Y-%m-%d", "dateString": "$when"}}}},
            {"$group": {"_id": {"$year": "$date", "$month": "$date"}, "count": {"$sum": 1}}},
            {"$sort": {"_id": 1}}
    ])
    

Comments are closed.