Birkaç alt belgeyi yansıtan bir toplu sorgumuz var. Bu öngörülen değerler hakkında Sum ve Ürün gibi birkaç aritmetik işlem uygulamak istedik.Aritmetik İşlemler için MongoDB toplaması - Subdocument Alanı
Toplama Sorgusu - Bu bildiren bir hata veriyor
Item.aggregate([
{ $unwind: '$dummy'},
{ $match: {'dummy.storage': {$gt: 0}} },
{ $group: {_id: '$_id',
dummy: {$push: '$dummy'},
original_y: { $first: "$original_y" },
new_y: { $first: "$new_y" },
}},
{$project:{
original_y: 1, new_y: 1,
tallyAmount: {$sum: ["$new_y","$original_y"] }
}
},
]
)
.exec(function(err, results){
if(err)
{
console.log("Error : " + err);
return res.json ({error: "Error"});
}
else if(!(results) || results == null || results.length == 0)
{
console.log("No Results Found");
return res.json ({error: "No Results Today"});
}else{
res.send(results);
}
});
invalid operator '$sum'
biz $project
içinde original_y
ve new_y
toplamını almak için ne yapmalıyım?
DÜZENLEME
Belgeler:
{
id:1,
original_y: 200,
new_y: 140,
dummy: [
{id:1, storage:2, cost: 10},
{id:2, storage:0, cost: 20},
{id:3, storage:5, cost: 30},
]
}
ÇIKIŞ BEKLENEN:
{
id:1,
original_y: 200,
new_y: 140,
dummy: [
{id:1, storage:2, cost: 10, tallyAmount: 34},
{id:3, storage:5, cost: 30, tallyAmount: 11.33},
]
}
, tallyAmount = (original_y + new_y)/cost
HATA: Bir alt için bir ifade ekleyemezsiniz kukla alanı olduğu için zaten tüm alan için geçerli bir ifade var
@chridam Belge ve Beklenen Çıkışlar güncellendi –
Güncelleme için teşekkürler, değişiklikleri dahil etmek için aşağıdaki cevabımı güncelledim. – chridam