我需要在聚合框架管道中计算数字的幂(如pow(3, 6)
)。
但是,似乎MongoDB没有在聚合框架中提供$ pow数学运算符。我很惊讶在可用的数学运算符中没有提供。
有没有人对解决方法有任何建议?或者我在文档中遗漏了哪些内容可以让我这样做?
答案 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 ] } } } ] )