我正在使用mongooseJs
var orderSchema = new mongoose.Schema({
product:String,
quantity:Number,
date:{type:Date , default: Date.now},
delivery_date:String,
amount:Number,
total:Number,
payment_status:{type:Boolean,default:false},
status:{type:String, default:"Placed"},
});
我真正想做的是显示明确的即将到来的订单 即
今天(2月1日): - 产品A - 100个单位
(2月2日): - 产品A - 150个单位,产品B - 200个单位
(2月3日): - 产品A - 20个单位,产品B - 400个单位
(2月4日): - 产品A - 0个单位,产品B - 500个单位,产品C - 5个单位
。 。 。 。 。 。
答案 0 :(得分:0)
您可以使用聚合管道对文档进行分组
$match
- 过滤所有过去的日期$group
- 按数据和产品分组,以及每种产品的$ sum数量$sort
- 推入排序数组$group
- 按日期对产品进行分组$addFields
- 将_id.date
映射为_id
管道
db.orders.aggregate(
[
{$match : {date : {$gte : new Date()}}},
{$group : {
_id : {date : "$date", product : "$product"},
quantity : {$sum : "$quantity"}
}
},
{$sort : {"_id.product" : 1}},
{$group : {
_id : {date : "$_id.date"},
products : {
$push : {product : "$_id.product", quantity : "$quantity"}
}
}
},
{$addFields : {_id : "$_id.date"}}
]
)