본문 바로가기
개발/db - sql, nosql

aggregation - mongodb ( $group, $project)

by 개발자종혁 2020. 3. 9.
728x90

mongodb에서 aggregation이란?

mysql의 subquery 같은 기능을 쓸 수 있는 기능

기본 형태

  • 쿼리
db.collection_name.aggregate([
{
"$group": { 
  '_id': 
  { 
    "user_id": "$user_id", 
    "user_name": "$user_name"
  } 
},
{ 
  "$project": { 
    "id": '$_id.user_id', 
    "name": '$_id.user_name', 
  } 
}])
  • 결과
[
   { "_id": { 
        "user_id" : 1, 
        "user_name": "Minho" 
    }, 
   "id" : 1, 
   "name": "Minho" 
   },
   { "_id": { 
                   "user_id" : 2, 
                "user_name": "Suji" 
             }, 
     "id" : 2, 
     "name": "Suji" 
   }
]

  • 쿼리 : _id 부분 없애기
db.collection_name.aggregate([{
{
  "$group": {
    '_id': {
      "user_id": "$user_id",
      "user_name": "$user_name",
    }
  }
},
{
  "$project": {
    "id": '$_id.user_id',
    "name": '$_id.user_name',
    "_id": 0
  }
}])
  • 결과
[
  {
   "id" : 1,
   "name": "Minho"
  },{
   "id" : 2,
   "name": "Suji"
  }
]

 

$group 그룹화 기준 attribute들
$project 보여주는 attribute들
728x90

댓글