2016-09-21 2 views
2

필드를 newField = someFunction(currentDocument)으로 생성하고 싶습니다. 그러나 이것은 지원되지 않는 것처럼 보입니다. 그렇지? 맵 축소 프레임 워크 내에서이 작업을 수행 할 수 있음을 알고 있지만 집계 프레임 워크 내에서 유지해야합니다. 일부 가장자리 경우, 나는 예를 들어, 일을 일을 얻을 수 있습니다 :Mongo aggregation - 필드를 생성하는 커스텀 함수

items.aggregate([ 
    { 
    $project: { 
     _tmp: ['$a', '$a', '$b'], 
    }, 
    }, 
    { 
    $unwind: '$_tmp', 
    }, 
    { 
    $group: { 
     _id: '$_id', 
     aab: { $sum: '$_tmp' } 
    } 
    }, 
]); 

은 아주 간단 2a+b와 동일한 필드를 생성하지만 과도하고 비효율적 인 것 같습니다.

답변

2

집계 파이프 라인에서 사용자 지정 함수를 사용할 수 없습니다. 모든 것은 내장 연산자를 사용하여 수행해야합니다. 더 표정

items.aggregate([ 
    {$project: {aab: {$add: ['$a', '$a', '$b']}}} 
]) 

또는 :

는 지금까지 $projectarithmetic operators를 사용하여 당신이 무엇을 향상시킬 수 말했다 내가 이것을 발견했다

items.aggregate([ 
    {$project: {aab: {$add: [{$multiply: [2, '$a']}, '$b']}}} 
]) 
+0

. 이것은 좋고 아마도 내가 필요한 것에 충분할 것입니다. 감사! – Guig

관련 문제