目前我有这个模式。数据库记录的Mongoose中的子文档总数
var cartSchema = new Schema({
userPurchased: {type: Schema.Types.ObjectId, ref: 'users'},
products: [
{
product: {type: Schema.Types.ObjectId, ref: 'products'},
size: {type: String, required: true},
quantity: {type: Number, required: true},
subTotal: {type: Number, required: true}
}
],
totalPrice: {type: Number, default: 0, required: true}
});
例
{
"_id": {
"$oid": "586f4be94d3e481378469a08"
},
"userPurchased": {
"$oid": "586dca1f5f4a7810fc890f97"
},
"totalPrice": 0,
"products": [
{
"product": {
"$oid": "58466e8e734d1d2b0ceeae00"
},
"size": "m",
"quantity": 5,
"subTotal": 1995,
"_id": {
"$oid": "586f4be94d3e481378469a09"
}
},
{
"subTotal": 1197,
"quantity": 3,
"size": "m",
"product": {
"$oid": "58466e8e734d1d2b0ceeae01"
},
"_id": {
"$oid": "586f4ef64d3e481378469a0a"
}
}
],
"__v": 0
}
有什么办法来总结所有的小计,并把它的总价场?现在我正在考虑集合函数,但我怀疑这是否是正确的方法。我想我需要一个更新查询和求和方法在同一时间。任何人都可以在这里帮助我吗?
虚拟财产如何加总产品的所有价格?我不认为有必要存储总价格。 – Camo
我认为聚合函数或map reduce函数是最好的解决方案。 MongoDB有一个格栅聚合和地图重新定义框架。看看这个例子https://docs.mongodb.com/manual/core/map-reduce/ –
@Camo你能给我一个例子吗?我认为这是一个好主意。 –