1

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

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

有人对解决方法有任何建议吗?还是我错过了文档中允许我这样做的内容?

4

3 回答 3

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 的补丁,可通过https://github.com/derickr/mongo/tree/aggregation-framework-new-operators-pow-round-sqrt获得

于 2013-08-05T10:44:38.143 回答
0

我面临同样的问题;事实上,我需要 pow() 和 cos() 函数。

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

于 2013-08-09T22:02:07.470 回答
0

3.2 Mongo中,您将拥有一个用于聚合框架的原生$pow操作,语法如下:{ $pow: [ <number>, <exponent> ] }.

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

于 2015-11-09T05:27:32.100 回答