【发布时间】:2020-02-29 01:46:42
【问题描述】:
我想为我的数据库的每个元素编写一个查询,对数组中第一个对象的每个字段 payment 求和。
架构如下:
var schema = new Schema({
plate : String,
category : String,
brand : String,
model : String,
sign : String,
tax : [{
date : { type: Date, default: Date.now },
payment : { type: Number, default: 0 },
}],
});
我为我的查询编写了以下函数:
function(callback){
Machine.aggregate(
[
{$unwind: "$tax"},
{$group : {
_id : null ,
tot : { $sum: "$tax.payment"}
}}
]
,callback);
}
但是通过这种方式,我检索了数组 tax 中所有付款的总和。我的目标是只取第一个,所以我尝试使用$tax.0.payment 并使用arrayElemAt : [$tax,0],但我所有的试验都给出了 tot = 0。
【问题讨论】:
-
arrayElemAt是解决此问题的一种正确方法。我已经发布了基于此的答案..检查是否可以解决它。
标签: arrays mongodb mongoose aggregation-framework