У меня есть две схемы - Продукты и Заказы - каждый заказ содержит массив продуктов, на которые ссылается object.id. То, что я пытаюсь сделать, это $ sum над product.sellPrice в массиве и установить totalSale перед сохранением нового документа заказа.
const orderSchema = new mongoose.Schema({
products: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Product"
}
],
totalSale: {
type: Number,
min: 0
}
});
const productSchema = new mongoose.Schema({
name: {
type: String,
unique: true,
required: true
},
sellPrice: {
type: Number,
min: 0,
required: true
}}):
Таким образом, каждый заказ будет содержать массив продуктов. То, что я пытался сделать, было в ловушке orderSchema.pre ('save'), я попытался запустить агрегирование следующим образом:
orderSchema.pre("save", function(next) {
let order = this;
order.totalSale = order.aggregate([
{ $unwind: { path: "$products" } },
{ $group: { _id: null, $sum: {} } }
]);
Возможно ли это или есть лучший способ подвести итоги цены каждого товара для заказа. Это действительно не должно быть предварительно («сохранить»)