2016-09-13 2 views
0

누구나 mongodb에서 다음과 같은 집계 연산을 도와 줄 수 있습니까? id 및 group id가있는 항목 모음을 가지고 그룹 ID별로 그룹화하십시오. 예를 들어, 아이템의 수집 :mongoDB에서 ID별로 그룹화하기

{ 
    "id": 1, 
    "group_id": 10, 
    "data": "some_data", 
    "name": "first" 
}, 
{ 
    "id": 2, 
    "group_id": 10, 
    "data": "some_data", 
    "name": "second" 
}, 
{ 
    "id": 3 
    "group_id": 20, 
    "data": "some_data", 
    "name": "third" 
} 

는 다음 구조 그룹의 새로운 집합을 생성 :

{ 
    "id": 10, 
    "items": [ 
     { 
      "id": 1, 
      "group_id": 10, 
      "data": "some_data", 
      "name": "first" 
     }, 
     { 
      "id": 2, 
      "group_id": 10, 
      "data": "some_data", 
      "name": "second" 
     } 
    ] 
}, 
{ 
    "id": 10, 
    "items": [ 
     { 
      "id": 2, 
      "group_id": 20, 
      "data": "some_data", 
      "name": "third" 
     } 
    ] 
} 

Java 및 스프링 데이터 MongoDB를 가진 대응하는 단편도 이해 될 것이다. 사실 자바로 지금도 똑같은 일을하고 있으며 페이징 최적화를 위해이 논리를 mongo로 옮기고 싶습니다.

답변

2

당신은 folowwing 간단한 group 집계와 함께 할 수 있습니다 : 당신이 출력하고자 할 때 새 컬렉션으로 집계의 데이터가 $out 운영자에게

+0

감사를 사용

db.table.aggregate( [ { $group: { _id : "$group_id", items : { "$push" : "$$ROOT" } } } ] ); 

, 완벽하게 작동합니다! –