2015-02-03 2 views
4

mongo/nosql을 처음 사용하는 이유는 "VALUES"항목의 배열 구조가 같은 여러 문서가 있기 때문입니다. 2 개 이상의 배열의 각 요소 위치를 합칠 수 있어야합니다. 도와 주셔서 감사합니다!Mongo에서 2 개 이상의 배열 요소를 합하는 방법

배열

{ 
    "_id" : ObjectId("54cbf4e6e883561eba48425e"), 
    "NAME" : "ATest", 
    "VALUES" : [ 
     1, 
     2, 
     3, 
     4, 
     5 
    ] 
} 
{ 
    "_id" : ObjectId("54cbf4e6e883561eba4842b4"), 
    "NAME" : "BTest", 
    "VALUES" : [ 
     10, 
     20, 
     30, 
     40, 
     50 
    ] 
} 

원하는 결과

{ 
    "_id" : "SUMTest", 
    "SUMVALUES" : [ 
     11, 
     22, 
     33, 
     44, 
     55 
    ] 
} 

답변

3

는 집계으로 힘들 수 있지만, map reduce을 시도하고 ID와 인덱스 각 값을 방출겠습니까. 다음과 같음 :

mapReduce(
    function m() { 
    this.VALUES.forEach(function (value, index) { 
     emit(index, value) 
    }) 
    }, 
    function r(id, values) { 
    return Array.sum(values) 
    }, 
    { 
    query: {} 
    } 
) 
관련 문제