Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

224
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!