Estoy usando gráficos mongodb. ¿Es posible obtener la cantidad de productos dentro del rango de tiempo de (por ejemplo: 12:00 a. m. - 5:00 a. m.)
Por ejemplo, tengo 2 productos agregados a las 3:00 a. m. y luego tendré 5 productos agregados a las 4:00 a. m.
Estoy contando los productos por su campo createdAt.
Tengo una muestra de datos como este:
Products: { "_id": { "$oid": "603c62272aacbc0017e2e4b5" }, "amount": 110, "user": { "$oid": "5f7408cf7889580017c369a1" }, "transaction_id": "cZ3fgffFI", "createdAt": { "$date": "2021-03-01T03:40:23.300Z" }, "updatedAt": { "$date": "2021-03-01T04:13:25.908Z" }, "__v": 0, }, { "_id": { "$oid": "603c62272aacbc0017e2e4b5" }, "amount": 110, "user": { "$oid": "5f7408cf7889580017c369a1" }, "transaction_id": "cZ3fgffFI", "createdAt": { "$date": "2021-03-01T03:40:23.300Z" }, "updatedAt": { "$date": "2021-03-01T04:13:25.908Z" }, "__v": 0, }, { "_id": { "$oid": "603c62272aacbc0017e2e4b5" }, "amount": 110, "user": { "$oid": "5f7408cf7889580017c369a1" }, "transaction_id": "cZ3fgffFI", "createdAt": { "$date": "2021-03-01T03:40:23.300Z" }, "updatedAt": { "$date": "2021-03-01T04:13:25.908Z" }, "__v": 0, }Producción:
Estoy contando los productos usando el campo createdAt.
3:00 AM 2 productos 4:00 AM 5 productos
Simplemente puede usar el grupo por horas para obtener datos de conteo por horas como a continuación,
[{ '$match':{ '$and':[ {'createdAt':{'$gte':'2021-03-08T00:00:00.000Z'}},{'createdAt':{'$lte':'2021-03-08T05:00:00.000Z'}}] } }, { '$project': { 'hours': { '$hours': 'createdAt' } } }, { '$group': { '_id': { 'hours': '$hours', }, 'total': { '$sum': 1 }, 'hours': { '$hours': '$hours' } } } ]Además, puede agregar cualquier otra condición usando la coincidencia para otros filtros que necesite.