연산자는 $setIsSubset 한 배열이 두 번째 배열의 하위 집합인지 여부를 나타내는 부울 값을 반환합니다. 배열을 집합으로 처리합니다. 즉, 중복 및 요소 순서를 무시합니다. 첫 번째 배열의 모든 요소가 두 번째 배열에 있으면 반환 true 됩니다. 그 외의 경우 false를 반환합니다.
문법
{
$setIsSubset: [ <array1>, <array2> ]
}
매개 변수
| 매개 변수 | Description |
|---|---|
<array1> |
의 하위 집합 <array2>인지 확인할 배열입니다. |
<array2> |
확인할 배열입니다. |
예시
스토어 컬렉션에서 이 샘플 문서를 고려합니다.
{
"_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f",
"name": "First Up Consultants | Bed and Bath Center - South Amir",
"location": {
"lat": 60.7954,
"lon": -142.0012
},
"staff": {
"totalStaff": {
"fullTime": 18,
"partTime": 17
}
},
"sales": {
"totalSales": 37701,
"salesByCategory": [
{
"categoryName": "Mattress Toppers",
"totalSales": 37701
}
]
},
"promotionEvents": [
{
"eventName": "Price Drop Palooza",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 30
}
},
"discounts": [
{
"categoryName": "Bath Accessories",
"discountPercentage": 18
},
{
"categoryName": "Pillow Top Mattresses",
"discountPercentage": 17
},
{
"categoryName": "Bathroom Scales",
"discountPercentage": 9
},
{
"categoryName": "Towels",
"discountPercentage": 5
},
{
"categoryName": "Bathrobes",
"discountPercentage": 5
},
{
"categoryName": "Mattress Toppers",
"discountPercentage": 6
},
{
"categoryName": "Hand Towels",
"discountPercentage": 9
},
{
"categoryName": "Shower Heads",
"discountPercentage": 5
},
{
"categoryName": "Bedspreads",
"discountPercentage": 19
},
{
"categoryName": "Bath Mats",
"discountPercentage": 21
}
]
}
]
}
예제 1: 판매 범주가 프로모션 범주의 하위 집합인지 확인
이 쿼리는 스토어의 모든 범주가 프로모션 할인에 포함되는지 여부를 결정하며 그 반대의 경우도 마찬가지입니다. 이 쿼리는 판매 및 프로모션 대괄호 아래에 포함된 범주를 반환합니다. 값이 sales 특정 승격 범주의 하위 집합임을 확인합니다(하지만 역방향은 수행하지 않음).
db.stores.aggregate([
{ $match: {"_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f"} },
{
$project: {
name: 1,
salesCategories: "$sales.salesByCategory.categoryName",
promotionCategories: { $arrayElemAt: ["$promotionEvents.discounts.categoryName", 0] },
salesAreSubsetOfPromotions: {
$setIsSubset: [
"$sales.salesByCategory.categoryName",
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 0] }
]
},
promotionsAreSubsetOfSales: {
$setIsSubset: [
{ $arrayElemAt: ["$promotionEvents.discounts.categoryName", 0] },
"$sales.salesByCategory.categoryName"
]
}
}
}
])
이 쿼리는 다음 결과를 반환합니다.
[
{
"_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f",
"name": "First Up Consultants | Bed and Bath Center - South Amir",
"salesCategories": [
"Mattress Toppers"
],
"promotionCategories": [
"Bath Accessories",
"Pillow Top Mattresses",
"Bathroom Scales",
"Towels",
"Bathrobes",
"Mattress Toppers",
"Hand Towels",
"Shower Heads",
"Bedspreads",
"Bath Mats"
],
"salesAreSubsetOfPromotions": true,
"promotionsAreSubsetOfSales": false
}
]