我需要pow(3, 6)
在我的聚合框架管道中计算一个数字(如 )的幂。
但是,似乎 MongoDB 在聚合框架中没有提供 $pow 数学运算符。我很惊讶在可用的数学运算符中没有提供这一点。
有人对解决方法有任何建议吗?还是我错过了文档中允许我这样做的内容?
我需要pow(3, 6)
在我的聚合框架管道中计算一个数字(如 )的幂。
但是,似乎 MongoDB 在聚合框架中没有提供 $pow 数学运算符。我很惊讶在可用的数学运算符中没有提供这一点。
有人对解决方法有任何建议吗?还是我错过了文档中允许我这样做的内容?
好吧,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获得
我面临同样的问题;事实上,我需要 pow() 和 cos() 函数。
我没有看到其他解决方案,只能暂时使用 map/reduce 函数进行聚合,在这种情况下,我可以使用 Javascript 的 Math.pow() 和 Math.cos()。
在3.2 Mongo中,您将拥有一个用于聚合框架的原生$pow操作,语法如下:{ $pow: [ <number>, <exponent> ] }
.
这是来自 mongo 页面的示例:db.datasets.aggregate( [ { $project: { raisedTo2: { $pow: [ 5, 2 ] } } } ] )