Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’opérateur de mise à jour de tableau $[identificateur] est utilisé pour mettre à jour des éléments spécifiques dans un tableau qui correspondent à une condition donnée. Cet opérateur est utile lorsque vous devez mettre à jour plusieurs éléments dans un tableau en fonction de certains critères. Il permet des mises à jour plus granulaires dans des documents, ce qui en fait un outil puissant pour gérer des structures de données complexes.
Syntaxe
{
<update operator>: {
<array field>.$[<identifier>]: <value>
}
},
{
arrayFilters: [
{ <identifier>.<field>: <condition> }
]
}
Paramètres
| Paramètre | Descriptif |
|---|---|
<update operator> |
Opérateur de mise à jour à appliquer (par exemple, $set, $inc, etc.). |
<array field> |
Champ contenant le tableau à mettre à jour. |
<identifier> |
Espace réservé utilisé pour arrayFilters faire correspondre des éléments spécifiques dans le tableau. |
<value> |
Valeur à définir ou à mettre à jour. |
arrayFilters |
Tableau de conditions de filtre pour identifier les éléments à mettre à jour. |
<field> |
Champ spécifique dans les éléments de tableau à vérifier. |
<condition> |
Condition à laquelle les éléments de tableau doivent être mis à jour. |
Examples
Considérez cet exemple de document de la collection des magasins.
{
"_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
}
}
Exemple 1 : Mettez à jour le pourcentage de remise pour la catégorie choisie dans l’événement de promotion spécifié.
Cette requête met à jour le pourcentage de remise pour la catégorie « Lampes de bureau » en modifiant les éléments spécifiques dans le tableau d’événements de promotion où le nom de l’événement est « 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" }
]
}
)