【发布时间】:2022-01-25 20:40:07
【问题描述】:
我试图在时间间隔内对 Orders 数组进行分组,并按日期对它们进行分组,对它们进行排序,并将所有订单分成几天。但是,我也想对每天排序的订单数组进行排序。
Orders.aggregate([{
$match: {
'created_at': {
$gte: timeInterval, //match last 3 days
}
}
}, {
"$group": {
_id: {
$dateToString: { format: "%d/%m/%Y", date: "$created_at", timezone: "Australia/Melbourne" } // group by date
},
orders: { $push: '$$ROOT' }
}
}, {
$sort: { '_id': -1 } // sort by date
}])
const OrderSchema = new Schema({
...,
created_at: {
type: Date,
default: Date.now
},
})
exData=[{_id: 26/12/2021, orders:[...]},{_id: 25/12/2021, orders:[...]}, ]
// need to sort orders array
我试过了:
{
$sort: { '_id': -1, "orders.created_at": -1 }
}
如果有任何帮助,我将不胜感激。谢谢。
【问题讨论】:
-
在
$match、$sort日期之后,然后是$group。 -
@YongShun 工作谢谢!
标签: node.js mongodb mongoose aggregation-framework