Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Оператор $arrayToObject используется для преобразования массива в один документ. Этот оператор полезен, если необходимо преобразовать массивы пар "ключ-значение" в более структурированный формат документа.
Syntax
{
$arrayToObject: "<array>"
}
Parameters
| Parameter | Description |
|---|---|
<array> |
Массив, который необходимо преобразовать в документ. Каждый элемент в массиве должен быть либо: a) Массив двухэлейных элементов, где первый элемент — имя поля, а второй — значение поля. b) Документ с двумя полями , "k" и "v", где "k" — это имя поля, а "v" — это значение поля. |
Examples
Рассмотрим этот пример документа из коллекции магазинов.
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"name": "Lakeshore Retail | DJ Equipment Stop - Port Cecile",
"location": {
"lat": 60.1441,
"lon": -141.5012
},
"staff": {
"totalStaff": {
"fullTime": 2,
"partTime": 0
}
},
"sales": {
"salesByCategory": [
{
"categoryName": "DJ Headphones",
"totalSales": 35921
},
{
"categoryName": "DJ Cables",
"totalSales": 1000
}
],
"fullSales": 3700
},
"promotionEvents": [
{
"eventName": "Bargain Blitz Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 3,
"Day": 11
},
"endDate": {
"Year": 2024,
"Month": 2,
"Day": 18
}
},
"discounts": [
{
"categoryName": "DJ Turntables",
"discountPercentage": 18
},
{
"categoryName": "DJ Mixers",
"discountPercentage": 15
}
]
},
{
"eventName": "Discount Delight Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 5,
"Day": 11
},
"endDate": {
"Year": 2024,
"Month": 5,
"Day": 18
}
}
}
],
"tag": [
"#ShopLocal",
"#FashionStore",
"#SeasonalSale",
"#FreeShipping",
"#MembershipDeals"
]
}
Пример 1. Преобразование массива в ключ: документ значения
Этот запрос преобразует salesByCategory массив в объект, где каждый categoryName является ключом и totalSales является соответствующим значением. Это преобразование упрощает доступ к данным о продажах по категориям непосредственно из структуры объектов.
db.stores.aggregate([{
$match: {
_id: "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5"
}
},
{
$project: {
"sales.salesByCategory": {
$arrayToObject: {
$map: {
input: "$sales.salesByCategory",
as: "item",
in: {
k: "$$item.categoryName",
v: "$$item.totalSales"
}
}
}
}
}
}
])
Запрос возвращает следующий результат.
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"sales": {
"salesByCategory": {
"DJ Headphones": 35921,
"DJ Cables": 1000
}
}
}
]
Связанный контент
- Просмотрите параметры миграции из MongoDB в Azure DocumentDB.
- Дополнительные сведения о совместимости функций с MongoDB.