首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$divide聚合框架问题

$divide聚合框架问题
EN

Stack Overflow用户
提问于 2015-11-01 07:34:57
回答 1查看 76关注 0票数 0

我有一个关于MongoDB聚合框架的查询。我不明白为什么我不能运行这个查询。我查看了文档,仍然感到困惑。谁能让我知道哪里出了问题。

代码语言:javascript
复制
 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} }

])
EN

回答 1

Stack Overflow用户

发布于 2015-11-01 07:52:19

请阅读$group手册页面,其中还列出了所有有效的“累加器”,这意味着必须_id之后引用的任何字段属性的第一个参数。

这应该会引导您计算出,如果您想对总和进行$divide,则需要使用$project将该操作放在单独的聚合管道阶段中

代码语言:javascript
复制
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值,因此您可以对其应用排序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33457746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档