$setIntersection (애그리게이션)
정의
$setIntersection
두 개 이상의 배열을 가져와 모든 입력 배열에 나타나는 요소가 포함된 배열을 반환합니다.
$setIntersection
의 구문은 다음과 같습니다:{ $setIntersection: [ <array1>, <array2>, ... ] } 인수는 각각 배열로 해석되는 한 유효한 표현식 이 될 수 있습니다. 표현식에 대한 자세한 내용은 표현식을 참조하세요 .
행동
$setIntersection
은 배열에 집합 연산을 수행하여 배열을 집합으로 취급합니다. 배열에 중복 항목이 포함되어 있으면 $setIntersection
는 중복 항목을 무시합니다. $setIntersection
는 요소의 순서를 무시합니다.
$setIntersection
결과에서 중복 항목을 필터링하여 고유한 항목만 포함하는 배열을 출력합니다. 출력 배열의 요소 순서는 지정되지 않습니다.
교차점이 발견되지 않으면(즉, 입력 배열에 공통 요소가 포함되지 않은 경우) $setIntersection
은 빈 배열을 반환합니다.
세트에 중첩된 배열 요소가 포함된 경우 $setIntersection
는 중첩된 배열로 내려가지 않고 최상위 수준에서 배열을 평가합니다.
예제 | 결과 | ||
---|---|---|---|
|
| ||
|
|
예제
이 섹션에는 collection과 함께 $setIntersection
를 사용하는 방법을 보여주는 예가 포함되어 있습니다.
요소 배열 예제
다음 문서가 포함된 flowers
컬렉션을 생각해 보세요.
db.flowers.insertMany( [ { "_id" : 1, "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "rose", "orchid" ] }, { "_id" : 2, "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "orchid", "rose", "orchid" ] }, { "_id" : 3, "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "rose", "orchid", "jasmine" ] }, { "_id" : 4, "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "jasmine", "rose" ] }, { "_id" : 5, "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ ] }, { "_id" : 6, "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ [ "rose" ], [ "orchid" ] ] }, { "_id" : 7, "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ [ "rose", "orchid" ] ] }, { "_id" : 8, "flowerFieldA" : [ ], "flowerFieldB" : [ ] }, { "_id" : 9, "flowerFieldA" : [ ], "flowerFieldB" : [ "rose" ] } ] )
다음 연산은 $setIntersection
연산자를 사용하여 flowerFieldA
배열과 flowerFieldB
배열 모두에 공통적인 요소의 배열을 반환합니다.
db.flowers.aggregate( [ { $project: { flowerFieldA: 1, flowerFieldB: 1, commonToBoth: { $setIntersection: [ "$flowerFieldA", "$flowerFieldB" ] }, _id: 0 } } ] )
이 연산은 다음과 같은 결과를 반환합니다.
{ "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "rose", "orchid" ], "commonToBoth" : [ "orchid", "rose" ] } { "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "orchid", "rose", "orchid" ], "commonToBoth" : [ "orchid", "rose" ] } { "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "rose", "orchid", "jasmine" ], "commonToBoth" : [ "orchid", "rose" ] } { "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "jasmine", "rose" ], "commonToBoth" : [ "rose" ] } { "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ ], "commonToBoth" : [ ] } { "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ [ "rose" ], [ "orchid" ] ], "commonToBoth" : [ ] } { "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ [ "rose", "orchid" ] ], "commonToBoth" : [ ] } { "flowerFieldA" : [ ], "flowerFieldB" : [ ], "commonToBoth" : [ ] } { "flowerFieldA" : [ ], "flowerFieldB" : [ "rose" ], "commonToBoth" : [ ] }