Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'operatore di aggiornamento della matrice $[identifier] viene usato per aggiornare elementi specifici in una matrice che corrisponde a una determinata condizione. Questo operatore è utile quando è necessario aggiornare più elementi all'interno di una matrice in base a determinati criteri. Consente aggiornamenti più granulari all'interno dei documenti, rendendoli uno strumento potente per la gestione di strutture di dati complesse.
Sintassi
{
<update operator>: {
<array field>.$[<identifier>]: <value>
}
},
{
arrayFilters: [
{ <identifier>.<field>: <condition> }
]
}
Parametri
| Parametro | Description |
|---|---|
<update operator> |
Operatore di aggiornamento da applicare , ad esempio , $sete $inccosì via. |
<array field> |
Campo contenente la matrice da aggiornare. |
<identifier> |
Segnaposto utilizzato in arrayFilters per trovare le corrispondenze con elementi specifici nella matrice. |
<value> |
Valore da impostare o aggiornare. |
arrayFilters |
Matrice di condizioni di filtro per identificare gli elementi da aggiornare. |
<field> |
Campo specifico all'interno degli elementi della matrice da controllare. |
<condition> |
Condizione che gli elementi della matrice devono soddisfare per essere aggiornati. |
Esempi
Si consideri questo documento di esempio dalla raccolta negozi.
{
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"name": "Trey Research | Home Office Depot - Lake Freeda",
"location": {
"lat": -48.9752,
"lon": -141.6816
},
"staff": {
"employeeCount": {
"fullTime": 12,
"partTime": 19
}
},
"sales": {
"salesByCategory": [
{
"categoryName": "Desk Lamps",
"totalSales": 37978
}
],
"revenue": 37978
},
"promotionEvents": [
{
"eventName": "Crazy Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2023,
"Month": 9,
"Day": 27
},
"endDate": {
"Year": 2023,
"Month": 10,
"Day": 4
}
},
"discounts": [
{
"categoryName": "Desks",
"discountPercentage": 25
},
{
"categoryName": "Filing Cabinets",
"discountPercentage": 23
}
]
},
{
"eventName": "Incredible Markdown Mania",
"promotionalDates": {
"startDate": {
"Year": 2023,
"Month": 12,
"Day": 26
},
"endDate": {
"Year": 2024,
"Month": 1,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Monitor Stands",
"discountPercentage": 20
},
{
"categoryName": "Desks",
"discountPercentage": 24
}
]
},
{
"eventName": "Major Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 3,
"Day": 25
},
"endDate": {
"Year": 2024,
"Month": 4,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Office Accessories",
"discountPercentage": 9
},
{
"categoryName": "Desks",
"discountPercentage": 13
}
]
},
{
"eventName": "Blowout Bonanza",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Office Chairs",
"discountPercentage": 24
},
{
"categoryName": "Desk Lamps",
"discountPercentage": 19
}
]
},
{
"eventName": "Super Saver Fiesta",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 10,
"Day": 1
}
},
"discounts": [
{
"categoryName": "Desks",
"discountPercentage": 5
},
{
"categoryName": "Monitor Stands",
"discountPercentage": 10
}
]
}
],
"company": "Trey Research",
"city": "Lake Freeda",
"storeOpeningDate": "2024-12-30T22:55:25.779Z",
"lastUpdated": {
"t": 1729983325,
"i": 1
}
}
Esempio 1: aggiornare la percentuale di sconto per la categoria scelta nell'evento di promozione specificato.
Questa query aggiorna la percentuale di sconto per la categoria 'Desk Lamps' modificando gli elementi specifici nella matrice di eventi di promozione in cui il nome dell'evento è 'Blowout Bonanza'.
db.stores.updateOne(
{
_id: "905d1939-e03a-413e-a9c4-221f74055aac",
"promotionEvents.eventName": "Blowout Bonanza"
},
{
$set: {
"promotionEvents.$[event].discounts.$[discount].discountPercentage": 18
}
},
{
arrayFilters: [
{ "event.eventName": "Blowout Bonanza" },
{ "discount.categoryName": "Desk Lamps" }
]
}
)