我需要在我的聚合框架管道中計算一個數字的功率(如pow(3, 6)
)。在MongoDB的聚合框架中計算數字的功率
但是,似乎MongoDB沒有在聚合框架中提供$ pow數學運算符。我很驚訝,這在現有的數學運算符中沒有提供。
有沒有人對解決方法有任何建議?或者我在文檔中遺漏了一些可以讓我這樣做的東西?
我需要在我的聚合框架管道中計算一個數字的功率(如pow(3, 6)
)。在MongoDB的聚合框架中計算數字的功率
但是,似乎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我已經創建了一個補丁,可以通過https://github.com/derickr/mongo/tree/aggregation-framework-new-operators-pow-round-sqrt
良好的建議,但「值的數目「對於基於管道中早期的$項目計算的每條記錄,總是動態的。 –
是的,因此需要一個新的服務器功能,我爲你製作了這個補丁;-) – Derick
聽起來不錯,但是我必須編譯它才能使用該補丁程序,還是有其他一些補丁方法? –
我是面臨同樣的問題;實際上我需要pow()和cos()函數。
我沒有看到任何其他的解決方案,但現在我們可以使用Javascript的Math.pow()和Math.cos()來處理map/
在3.2 Mongo中,對於具有以下語法的聚合框架,您將擁有本機$pow操作:{ $pow: [ <number>, <exponent> ] }
。
下面是從蒙戈頁面的示例:db.datasets.aggregate([ { $project: { raisedTo2: { $pow: [ 5, 2 ] } } } ])
3.2版本將具有它[本地](http://stackoverflow.com/a/33603017/1090562) –