Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Оператор $setIsSubset возвращает логическое значение, указывающее, является ли один массив подмножеством второго массива. Он обрабатывает массивы как наборы, что означает, что он игнорирует повторяющиеся элементы и порядок элементов. Возвращается true , если все элементы первого массива существуют во втором массиве. В противном случае возвращается false.
Синтаксис
{
$setIsSubset: [ <array1>, <array2> ]
}
Параметры
| Параметр | Описание |
|---|---|
<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
}
]
Связанный контент
- Просмотрите параметры миграции из MongoDB в Azure Cosmos DB для MongoDB (vCore).
- Дополнительные сведения о совместимости функций с MongoDB.