2013-08-04 6 views
1

집계 - 프레임 워크 파이프 라인에서 숫자의 힘 (예 : pow(3, 6))을 계산해야합니다.MongoDB의 집계 프레임 워크에서 숫자의 힘을 계산하십시오.

그러나 MongoDB는 집계 프레임 워크에서 $ pow 수학 연산자를 제공하지 않는 것으로 보입니다. 나는 이것이 가능한 수학 연산자에서 제공되지 않는다는 것에 놀랐다.

해결 방법에 대한 제안 사항이 있습니까? 아니면 내가 이것을 할 수 있도록 문서에서 뭔가를 놓쳤는가? 대신 pow(3, 6)

+0

3.2 버전 [기본적]를 가질 것이다 (http://stackoverflow.com/a/33603017/1090562) –

답변

3

글쎄, 당신은 물론 수행 할 수 있습니다

> 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 
} 

내가 그렇게 http://jira.mongodb.org/browse/SERVER에서 이것에 대한 기능을 제안하십시오하는 JIRA 티켓을 찾을 수 없습니다 단지 다음과 같이하십시오 : https://jira.mongodb.org/browse/SERVER-8568 마스터에 대한 패치를 만들었습니다. https://github.com/derickr/mongo/tree/aggregation-framework-new-operators-pow-round-sqrt

+0

좋은 제안하지만 "값의 개수 : 여기

는 몽고 페이지의 예는 "는 파이프 라인의 초기 $ 프로젝트 계산을 기반으로 모든 레코드에 항상 동적입니다. –

+0

그래, 따라서이 패치를 만들었던 새로운 서버 기능에 대한 필요성이 ;-) – Derick

+0

소리가 아주 좋지만 패치를 사용하기 위해 컴파일해야합니까? 아니면 패치하는 다른 방법이 있습니까? –

0

같은 문제에 직면했다. 사실 pow() 및 cos() 함수가 필요했습니다.

다른 해결책은 찾지 못했지만 지금 map/reduce 함수를 사용하여 집계를 수행해야합니다.이 경우 Javascript의 Math.pow() 및 Math.cos()를 사용할 수 있습니다.

0

3.2 Mongo에서 { $pow: [ <number>, <exponent> ] } 구문을 사용하는 집계 프레임 워크에 대해 기본 $pow 작업을 수행하게됩니다. db.datasets.aggregate([ { $project: { raisedTo2: { $pow: [ 5, 2 ] } } } ])

관련 문제