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

227
Vistas
¿Cómo obtener el recuento de nuevos valores por meses?

Tengo una colección que incluye documentos con esta estructura:

 { car: carId, seller: sellerId, buyer: buyerId, timestamp: timestamp }

Quiero extraer el recuento único de propietarios de automóviles nuevos (primera vez que tuve un automóvil) por mes.

Así que el resultado esperado sería como:

 [ { date: 2022-01-01T00:00:00.000+00:00, newCarOwners: 28 }, { date: 2022-02-01T00:00:00.000+00:00, newCarOwners: 18 }, { date: 2022-03-01T00:00:00.000+00:00, newCarOwners: 10 } ... ]

Creo que puedo lograrlo agrupando los documentos por mes y carId, luego encontrar propietarios (el ID de comprador de la última transacción para cada carId) por mes. A continuación, excluya a los propietarios (acumulativos) de meses anteriores.

$setWindowFields podría ser útil, pero no pude encontrar una manera de excluir a los propietarios de meses anteriores.

En este momento, mi tubería se ve así:

 [ { $set: { month: { $dateTrunc: { date: { $toDate: '$timestamp' }, unit: 'month', binSize: 1, timezone: 'GMT', } } } }, { $group: { _id: { month: '$month', carId: '$carId' }, doc: { $max: { ts: '$timestamp', buyer: '$buyer' } } } }, { $group: { _id: { month: '$_id.month' }, owners: { $addToSet: '$doc.buyer' } } } ]

Estoy abierto a cualquier idea/solución, también podría ser de otra manera que no sea la mía.

Gracias.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

db.collection.aggregate([ { $group: { _id: "$buyer", firstTime: { $min: "$timestamp" }, count: { $sum: 1 } } }, { $match: { count: 1 } }, { $group: { _id: { $dateTrunc: { date: { $toDate: "$firstTime" }, unit: "month", binSize: 1, timezone: "GMT" } }, newCarOwners: { $sum: 1 } } } ])

parque infantil mongo

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