Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Оператор $push используется для добавления указанного значения в массив в документе. Оператор $push добавляет новые элементы в существующий массив, не затрагивая другие элементы в массиве.
Syntax
db.collection.update({
< query >
}, {
$push: {
< field >: < value >
}
}, {
< options >
})
Parameters
| Parameter | Description |
|---|---|
<query> |
Критерии выбора для обновляемых документов. |
<field> |
Поле массива, к которому будет добавлено значение. |
<value> |
Значение, добавляемое к полю массива. |
<options> |
Optional. Дополнительные параметры операции обновления. |
Examples
Рассмотрим этот пример документа из коллекции магазинов.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Пример 1. Добавление новой категории продаж
Чтобы добавить новую категорию продаж в массив salesByCategory, выполните запрос с помощью оператора $push в поле с новым объектом Sales с именем категории и его объемом продаж.
db.stores.update({
_id: "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"
}, {
$push: {
"sales.salesByCategory": {
categoryName: "Wine Accessories",
totalSales: 1000.00
}
}
})
Этот запрос возвращает следующий результат:
[
{
"acknowledged": true,
"insertedId": null,
"matchedCount": "1",
"modifiedCount": "1",
"upsertedCount": 0
}
]
Пример 2. Использование $push с $setWindowFields
Чтобы получить различные объемы продаж во всех магазинах в рамках компании First Up Consultants, сначала выполните запрос на секционирование магазинов в компании. Затем используйте оператор $push, чтобы создать список продаж от первого до текущего магазина в пределах раздела.
db.stores.aggregate([{
$match: {
company: {
$in: ["First Up Consultants"]
}
}
}, {
$setWindowFields: {
partitionBy: "$company",
sortBy: {
"sales.totalSales": -1
},
output: {
salesByStore: {
$push: "$sales.totalSales",
window: {
documents: ["unbounded", "current"]
}
}
}
}
}, {
$project: {
company: 1,
salesByStore: 1
}
}])
Первые три результата, возвращаемые этим запросом:
[
{
"_id": "a0386810-b6f8-4b05-9d60-e536fb2b0026",
"company": "First Up Consultants",
"salesByStore": [
327583
]
},
{
"_id": "ad8af64a-d5bb-4162-9bb6-e5104126566d",
"company": "First Up Consultants",
"salesByStore": [
327583,
288582
]
},
{
"_id": "39acb3aa-f350-41cb-9279-9e34c004415a",
"company": "First Up Consultants",
"salesByStore": [
327583,
288582,
279183
]
}
]
Связанный контент
- Просмотрите параметры миграции из MongoDB в Azure DocumentDB.
- Дополнительные сведения о совместимости функций с MongoDB.