-
Notifications
You must be signed in to change notification settings - Fork 0
3.1 mongo aggregration
couplewith edited this page Feb 21, 2023
·
5 revisions
mongo database의 sql 은 json으로 작동이 됩니다.
{
--
$group:
{
_id: <expression>, // Group key
<field1>: { <accumulator1> : <expression1> },
...
}
}
Field | Description |
---|---|
_id | Required. The _id expression specifies the group key. If you specify an _id value of null, or any other constant value, the $group stage returns a single document that aggregates values across all of the input documents. See the Group by Null example. |
field | Optional. Computed using the accumulator operators. |
다음과 같이 foo인덱스에서 { x: 1, y: 1 }가 포함된 경우 해당 인덱스를 사용하여 각 그룹의 첫 번째 문서를 찾을 수 있습니다
db.foo.aggregate([
{
$sort:{ x : 1, y : 1 }
},
{
$group: {
_id: { x : "$x" },
y: { $first : "$y" }
}
}
])
db.counter_58.aggregate(
{ $project : { _id:0, k : 1, svc: 1, pt : 2, statics: 1 } }
);
"result" : [
{
"statics" : {
"monthly" : {
"201301" : 2
},
"daily" : {
"20130109" : 2
}
},
"svc" : 10,
"pt" : "PC",
"k" : "308465661"
}
],
"ok" : 1
db.counter_58.aggregate(
{ $unwind :"$daily" },
{ $project : { _id:0, svc: 1, pc : 1, statics : 1 } }
);
- $unwind : 입력 문서에서 배열 필드를 분해하여 각 요소에 대한 문서를 출력합니다. 각 출력 문서는 배열 필드의 값이 요소로 대체된 입력 문서
$unwind를 이용하면 size 필드를 출력합니다.
db.inventory.aggregate( [ { $unwind : "$sizes" } ] )
{ "_id" : 1, "item" : "ABC1", "sizes" : "S" }
--
{ "_id" : 1, "item" : "ABC1", "sizes" : "M" }
{ "_id" : 1, "item" : "ABC1", "sizes" : "L" }
이름 | 설명 |
---|---|
$accumulator | 사용자 정의 누산기 함수의 결과를 반환합니다. |
$addToSet | 각 그룹에 대한 고유한 식 값 의 배열을 반환합니다 . 배열 요소의 순서는 정의되지 않습니다. 버전 5.2 의 새로운 기능 $group그리고 $setWindowFields 와 함께 사용 |
$avg | 숫자 값의 평균을 반환합니다. 숫자가 아닌 값을 무시합니다. 버전 5.2 의 새로운 기능 $setWindowFields와 함께 사용 |
$bottom | 지정된 정렬 순서에 따라 그룹 내의 맨 아래 요소를 반환합니다.버전 5.2 의 새로운 기능 $group그리고 $setWindowFields 와 함께 사용 |
$bottomN | n지정된 정렬 순서에 따라 그룹 내 하단 필드의 집계를 반환합니다 .버전 5.2 의 새로운 기능 $group그리고 $setWindowFields 와 함께 사용 |
$count | 그룹의 문서 수를 반환합니다.파이프라인 단계 와 구별됩니다 $count.버전 5.0 의 새로운 기능 .$group$setWindowFields와 함께 사용할 수 있습니다 |
$first | 각 그룹의 첫 번째 문서에서 값을 반환합니다. 순서는 문서가 정렬된 경우에만 정의됩니다. 버전 5.0 에서 변경 $setWindowFields. 하여 사용할 수 있습니다 |
$firstN | n그룹 내 첫 번째 요소의 집계를 반환합니다 . 문서가 정의된 순서로 있을 때만 의미가 있습니다. 버전 5.2 의 새로운 기능 .$group$setWindowFields 표현식을 사용할 수 있습니다 |
$last | 각 그룹의 마지막 문서에서 값을 반환합니다. 순서는 문서가 정렬된 경우에만 정의됩니다. 버전 5.0 에서 변경 $setWindowFields를 사용할 수 있습니다. |
$lastN | n그룹 내 마지막 요소의 집계를 반환합니다 . 문서가 정의된 순서로 있을 때만 의미가 있습니다. 버전 5.2 의 새로운 표현식 .$group$setWindowFields 사용할 수 있습니다 } |
$max | 각 그룹의 가장 높은 표현식 값을 반환합니다. 버전 5.0 에서 변경 : 단계 에서 $setWindowFields 사용. |
$maxN | n그룹에서 최대값 요소 의 집계를 반환합니다. 배열 연산자 와 다릅니다 $maxN.버전 5.2 의 새로운 기능으로 $group, $setWindowFields 사용 . |
$mergeObjects | 그룹별 입력 문서를 조합하여 생성된 문서를 반환합니다. |
$min | 각 그룹의 가장 낮은 표현식 값을 반환합니다.버전 5.0 에서 변경 : 단계 에서 사용할 수 있습니다 $setWindowFields. |
$push | 각 그룹의 문서에 대한 표현식 값의 배열을 반환합니다.버전 5.0 에서 변경 : 단계 에서 사용할 수 있습니다 $setWindowFields. |
$stdDevPop | 입력 값의 모집단 표준편차를 반환합니다.버전 5.0 에서 변경 : 단계 에서 사용할 수 있습니다 $setWindowFields. |
$stdDevSamp | 입력 값의 샘플 표준 편차를 반환합니다.버전 5.0 에서 변경 : 단계 에서 사용할 수 있습니다 $setWindowFields. |
$sum | 숫자 값의 합계를 반환합니다. 숫자가 아닌 값을 무시합니다.버전 5.0 에서 변경 : 단계 에서 사용할 수 있습니다 $setWindowFields. |
$top | 지정된 정렬 순서에 따라 그룹 내의 최상위 요소를 반환합니다.버전 5.2 의 새로운 기능 .가능$group그리고 $setWindowFields단계. |
$topN | n지정된 정렬 순서에 따라 그룹 내 상위 필드의 집계를 반환합니다 .버전 5.2 의 새로운 기능 .가능$group그리고 $setWindowFields단계. |