计算MongoDB聚合框架中数字的功能

时间:2013-08-04 01:14:28

标签: mongodb aggregation-framework

我需要在聚合框架管道中计算数字的幂(如pow(3, 6))。

但是,似乎MongoDB没有在聚合框架中提供$ pow数学运算符。我很惊讶在可用的数学运算符中没有提供。

有没有人对解决方法有任何建议?或者我在文档中遗漏了哪些内容可以让我这样做?

3 个答案:

答案 0 :(得分:3)

嗯,而不是pow(3, 6),你当然可以这样做:

> db.so.insert( { value: 5 } );
> db.so.aggregate( [
    { $project: { 
        res: { 
            $multiply: [ '$value', '$value', '$value', '$value', '$value', '$value' ] 
        } 
    } } 
] );

结果:

{
    "result" : [
        {
            "_id" : ObjectId("51ff812723daeb048e4b2f26"),
            "res" : 15625
        }
    ],
    "ok" : 1
}

我找不到JIRA票证,所以请在http://jira.mongodb.org/browse/SERVER上为此建议一个功能,就像这样:https://jira.mongodb.org/browse/SERVER-8568我创建了一个针对master的补丁,可以通过{{3}获得}

答案 1 :(得分:0)

我遇到了同样的问题;实际上我需要pow()和cos()函数。

我没有看到其他解决方案,但现在决定使用map / reduce函数进行聚合,在这种情况下,我可以使用Javascript的Math.pow()和Math.cos()。

答案 2 :(得分:0)

3.2 Mongo 中,您将使用以下语法对聚合框架进行本机$pow操作:{ $pow: [ <number>, <exponent> ] }

以下是mongo页面中的示例:db.datasets.aggregate( [ { $project: { raisedTo2: { $pow: [ 5, 2 ] } } } ] )