AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

$setDifference (표현식 연산자)

$setDifference

두 개의 세트를 취하고 첫 번째 세트에만 존재하는 요소를 포함하는 배열을 반환합니다. 즉, 첫 번째 세트에 대해 두 번째 세트의 상대적 보수 를 수행합니다.

$setDifference 의 구문은 다음과 같습니다:

{ $setDifference: [ <expression1>, <expression2> ] }

인수는 각각 배열로 해석되는 한 유효한 표현식 이 될 수 있습니다. 표현식에 대한 자세한 내용은 표현식을 참조하세요 .

$setDifference은(는) 배열을 집합으로 처리하여 배열에 대한 설정하다 작업을 수행합니다. 배열 에 중복 항목이 포함된 경우 는 중복$setDifference $setDifference 항목을 무시합니다. 은(는) 요소의 순서를 무시합니다.

$setDifference 결과에서 중복 항목을 필터링하여 고유한 항목만 포함하는 배열 출력합니다. 출력 배열 의 요소 순서는 지정되지 않습니다.

설정하다 에 중첩된 배열 요소가 포함된 경우$setDifference 는 중첩된 배열 로 내려가지 않고 최상위 수준에서 배열 평가합니다.

예시
결과
참고 사항
{ $setDifference: [
[ "a", "c" ],
[ "a", "b" ]
] }
[ "c" ]

"a" 이 두 배열에 모두 있으므로 결과에서 제거됩니다. "c" 은(는) 첫 번째 배열 에만 존재합니다.

{ $setDifference: [
[ "a", "c" ],
[ "a", "b", "c" ]
] }
[ ]

"a""c" 모두 두 배열에 모두 있으므로 결과에서 제거됩니다. 첫 번째 배열 에 더 이상 요소가 남아 있지 않습니다.

{ $setDifference: [
[ "a", "b", "a" ],
[ "b", "a" ]
] }
[ ]

"a""b" 모두 두 배열에 모두 있으므로 결과에서 제거됩니다. 중복 항목도 제거됩니다. 첫 번째 배열 에 더 이상 요소가 남아 있지 않습니다.

{ $setDifference: [
[ "a", "b" ],
[ [ "a", "b" ] ]
] }
[ "a", "b" ]

첫 번째 배열 의 "a""b" 문자열은 중첩된 배열 포함하는 두 번째 배열 에서 찾을 수 없습니다.

{ $setDifference: [
[ ],
[ "a", "b" ]
] }
[ ]

첫 번째 배열 은 비어 있으므로 두 번째 배열 에 있는 내용에 관계없이 뺄 요소가 없습니다.

{ $setDifference: [
[ "a", "a" ],
[ "a", "b" ]
] }
[ ]

"a" 두 번째 배열 에 있으므로 결과에서 제거됩니다. 중복 항목도 제거됩니다. 첫 번째 배열 에 더 이상 요소가 남아 있지 않습니다.

다음 문서가 포함된 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" ] }
] )

다음 작업은 $setDifference 연산자 사용하여 flowerFieldB 배열 에는 있지만 배열 에는 없는 요소의 배열 flowerFieldA 반환합니다.

db.flowers.aggregate(
[
{ $project: { flowerFieldA: 1, flowerFieldB: 1, inBOnly: { $setDifference: [ "$flowerFieldB", "$flowerFieldA" ] }, _id: 0 } }
]
)

이 연산은 다음과 같은 결과를 반환합니다.

{ "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "rose", "orchid" ], "inBOnly" : [ ] }
{ "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "orchid", "rose", "orchid" ], "inBOnly" : [ ] }
{ "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "rose", "orchid", "jasmine" ], "inBOnly" : [ "jasmine" ] }
{ "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "jasmine", "rose" ], "inBOnly" : [ "jasmine" ] }
{ "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ ], "inBOnly" : [ ] }
{ "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ [ "rose" ], [ "orchid" ] ], "inBOnly" : [ [ "rose" ], [ "orchid" ] ] }
{ "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ [ "rose", "orchid" ] ], "inBOnly" : [ [ "rose", "orchid" ] ] }
{ "flowerFieldA" : [ ], "flowerFieldB" : [ ], "inBOnly" : [ ] }
{ "flowerFieldA" : [ ], "flowerFieldB" : [ "rose" ], "inBOnly" : [ "rose" ] }
이 페이지 평가하기

이 페이지의 내용