Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Operatorn $push används för att lägga till ett angivet värde i en matris i ett dokument. Operatorn $push lägger till nya element i en befintlig matris utan att påverka andra element i matrisen.
Syntax
db.collection.update({
< query >
}, {
$push: {
< field >: < value >
}
}, {
< options >
})
Parameterar
| Parameter | Description |
|---|---|
<query> |
Urvalskriterierna för de dokument som ska uppdateras. |
<field> |
Matrisfältet som värdet ska läggas till i. |
<value> |
Värdet som ska läggas till i matrisfältet. |
<options> |
Valfritt. Ytterligare alternativ för uppdateringsåtgärden. |
Examples
Överväg det här exempeldokumentet från butiksamlingen.
{
"_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
}
]
}
]
}
Exempel 1 – Lägg till en ny försäljningskategori
Om du vill lägga till en ny försäljningskategori i matrisen salesByCategory kör du en fråga med operatorn $push i fältet med ett nytt Sales-objekt med namnet på kategorin och dess försäljningsvolym.
db.stores.update({
_id: "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"
}, {
$push: {
"sales.salesByCategory": {
categoryName: "Wine Accessories",
totalSales: 1000.00
}
}
})
Den här frågan returnerar följande resultat:
[
{
"acknowledged": true,
"insertedId": null,
"matchedCount": "1",
"modifiedCount": "1",
"upsertedCount": 0
}
]
Exempel 2 – Använda $push med $setWindowFields
Om du vill hämta distinkta försäljningsvolymer för alla butiker under företaget "First Up Consultants", kör du först en fråga för att partitionera butiker inom företaget. Använd sedan operatorn $push för att skapa en lista över försäljning från den första till den aktuella butiken i partitionen.
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
}
}])
De första tre resultaten som returneras av den här frågan är:
[
{
"_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
]
}
]
Relaterat innehåll
- Granska alternativen för att migrera från MongoDB till Azure DocumentDB.
- Läs mer om funktionskompatibilitet med MongoDB.