Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Polecenie update służy do modyfikowania istniejących dokumentów w kolekcji. Polecenie update może służyć do aktualizowania jednego lub wielu dokumentów na podstawie kryteriów filtrowania. Wartości pól można zmienić, można dodawać nowe pola i wartości, a istniejące pola można usunąć.
Przykłady
Rozważmy ten przykładowy dokument z kolekcji sklepów w bazie danych StoreData.
{
"_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
}
]
}
]
}
Przykład 1 — aktualizowanie pojedynczego dokumentu przy użyciu operatora $inc
Zwiększ łączną sprzedaż o 10 i odejmuje liczbę pełnoetatowych pracowników dokumentu z określonym _id.
db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$inc": {"sales.salesByCategory.0.totalSales": 10, "staff.totalStaff.fullTime": -6}})
Przykład 2 — aktualizowanie pojedynczego dokumentu przy użyciu operatora $min
Zaktualizuj liczbę totalStaff dla dokumentu z określonym _id do 10, jeśli bieżąca wartość pola jest większa niż 10.
db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$min": {"staff.totalStaff.fullTime": 10}})
Przykład 3 — aktualizowanie pojedynczego dokumentu przy użyciu operatora $max
Zaktualizuj liczbę totalStaff dla dokumentu z określonym _id do 14, jeśli bieżąca wartość pola jest mniejsza niż 14.
db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$max": {"staff.totalStaff.fullTime": 14}})
Przykład 4 — aktualizowanie pojedynczego dokumentu przy użyciu operatora $mul
Wielokrotność liczby pracowników w niepełnym wymiarze godzin do 2 dla dokumentu z określoną wartością _id.
db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$mul": {"staff.totalStaff.partTime": 2}})
Przykład 5 — aktualizowanie pojedynczego dokumentu przy użyciu operatora $rename
Zmień odpowiednio nazwy pól totalSales i totalStaff na fullSales i staffCounts.
db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$rename": {"sales.totalSales": "sales.fullSales", "staff.totalStaff": "staff.staffCounts"}})
Przykład 6 — aktualizowanie pojedynczego dokumentu przy użyciu operatora $set
Ustaw pole fullSales na wartość 3700 dla dokumentu z określoną wartością _id.
db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$set": {"sales.fullSales": 3700}})
Przykład 7 — aktualizowanie pojedynczego dokumentu przy użyciu operatora $unset
Usuń pole lon z obiektu location w dokumencie z określoną wartością _id.
db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$unset": {"location.lon": ""}})
Przykład 8 — aktualizowanie wielu dokumentów
Zaktualizuj wszystkie dokumenty, w których pierwsze wydarzenie promocyjne rozpocznie się w lutym, aby rozpocząć się w marcu.
db.stores.updateMany({"promotionEvents.0.promotionalDates.startDate.Month": 2}, {"$inc": {"promotionEvents.0.promotionalDates.startDate.Month": 1}})
Przykład 9 — upsert pojedynczego dokumentu
Ustaw flagę upsert na true, aby utworzyć nowy dokument, jeśli dokument określony w filtrze zapytania nie istnieje w kolekcji.
db.stores.updateOne({"_id": "NonExistentDocId"}, {"$set": {"name": "Lakeshore Retail", "sales.totalSales": 0}}, {"upsert": true})