我对MongoDB聚合框架有这个查询。我无法弄清楚为什么我无法运行此查询。我检查了文档,但仍然感到困惑。任何人都可以让我知道什么是错的。
db.acquisitions.aggregate([
{ $match: {"acquired_year":{$gte:1999} } },
{ $group: {_id:"$acquired_year", "total_acquisition_amount(BBn)": { $divide :[ {$sum:"$acquistion_price"}, 1000000000 ] } }},
{ $sort : {"acquired_year" : -1} }
])
答案 0 :(得分:1)
阅读$group
手册页,其中还列出了所有有效的"累加器",这意味着必须的运算符是后引用的任何字段属性的第一个参数_id
。
然后,这应该引导您确定如果您想要总计的$divide
,则需要将该操作放在具有$project
的单独聚合管道阶段中:
db.acquisitions.aggregate([
{ "$match": { "acquired_year":{ "$gte": 1999 } }},
{ "$group": {
"_id":"$acquired_year",
"total_acquisition_amount(BBn)": { "$sum": "$acquistion_price" }
}},
{ "$project": {
"total_acquisition_amount(BBn)": {
"$divide": [ "$totatotal_acquisition_amount(BBn)", 1000000000 ]
}
}},
{ "$sort": { "_id": -1 }}
])
否则您可以使用数学和其他运算符的唯一方法是"在"像$sum
这样的累加器,在这种情况下不适用,因为必须在"之后进行除法。总数已经确定。
此外,由于$group
," acquired_year"字段不再是发出的文档的一部分,而是_id
值,因此您应该对其应用排序。