Estoy buscando escribir una consulta para agregar la cantidad según las fechas.
Tengo documentos que se ven así:
{ "_id" : 1234, "itemNumber" : "item 1", "date" : ISODate("2021-10-26T21:00:00Z"), "quantity" : 1, "__v" : 0 }Y una consulta como esta:
//monogoose myCollection.aggregate().group({ _id: '$itemNumber', ninetyDays: { $sum: { $and: { $gte: ["date", dayjs().subtract(90, 'd').toDate()], $lt: ["date", dayjs().toDate()] } } } }) En la consulta anterior ninetyDays siempre es 0.
Básicamente, estoy buscando obtener la suma de la cantidad dada un rango de fechas.
La ayuda es muy apreciada.
Gracias
Puede usar $cond para sumar 1 o 0 si su condición coincide.
Suponiendo que su expresión de fecha sea correcta, esto debería funcionar, pero no falsifique $ en la date .
db.collection.aggregate([ { "$group": { "_id": "$itemNumber", "ninetyDays": { "$sum": { "$cond": { "if": { "$and": [ $gte: ["$date", dayjs().subtract(90, 'd').toDate()], $lt: ["$date", dayjs().toDate()] ] }, "then": 1, "else": 0 } } } } } ]) Ejemplo aquí donde he usado mongo $$NOW pero si su fecha funciona, es más fácil usar su código.