Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

469
Vistas
How to get number of registered users each month with MongoDB query?

I am trying to retrieve the total number of users registered each month grouping them by year and month they registered in MongoDB My user model looks like this

email: String,
  
  gender: String,
  
  password: {
    hash: {
      type: String,
      // required: true
    },
    salt: {
      type: String,
      // required: true
    },
    reset: {
      id: {
        type: String,
        default: "",
      },
      code: {
        type: String,
        default: "",
      },
    },
  },
  name: {
    first: String,
    last: String,
    username: String,
  },
  date: {
    registered: {
      type: Date,
    }
  }

The date parameter is an ISO string

the query that I tried is this

var today = new Date();


            data.newUsersEachMonth=await AccountModel.aggregate([
                { "$match": {
                    "date": {"date.registered": { "$lt": today.toISOString() }}
                    }},
                { "$group": {
                        "_id": {
                            "year": { "$year": "$date" },
                            "month": { "$month": "$date" },
                        },
                        "count": { "$sum": 1 }
                    }}
            ])

But it returns an empty array How can i solve this?

UPDATE

As suggested i tried these two queries

                { "$match": {
                    "date.registered": { "$lt": today.toISOString() }
                    }},
                { "$group": {
                        "_id": {
                            "year": { "$year": "$date.registered" },
                            "month": { "$month": "$date.registered" },
                        },
                        "count": { "$sum": 1 }
                    }}
            ])

and

data.newUsersEachMonth=await AccountModel.aggregate([
                { "$match": {
                    "date.registered": { "$lt": today.toISOString() }
                    }},
                { "$group": {
                        "_id": {
                            "year": { "$year": "$date" },
                            "month": { "$month": "$date" },
                        },
                        "count": { "$sum": 1 }
                    }}
            ])```

Still getting an empty array
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Aggregation query should be like below,

[
  { 
      '$match': {
        'date.registered': { 
            '$lt': today.toISOString() 
        }
     }
  },
  {
    '$project': {
      'month': {
        '$month': '$date.registered'
      }, 
      'year': {
        '$year': '$date.registered'
      }
    }
  }, {
    '$group': {
      '_id': {
        'month': '$month', 
        'year': '$year'
      }, 
      'total': {
        '$sum': 1
      }, 
      'month': {
        '$first': '$month'
      }, 
      'year': {
        '$first': '$year'
      }
    }
  }
]
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda