我有一个关于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} }
])发布于 2015-11-01 07:52:19
请阅读$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值,因此您可以对其应用排序。
https://stackoverflow.com/questions/33457746
复制相似问题