Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El operador $[] de DocumentDB se usa para actualizar todos los elementos de una matriz que coincidan con una condición especificada. Este operador permite realizar actualizaciones en varios elementos de una matriz sin especificar sus posiciones. Resulta especialmente útil cuando es necesario aplicar la misma actualización a todos los elementos de una matriz.
Syntax
db.collection.update(
<query>,
{
$set: {
<arrayField>.$[]: <value>
}
}
)
Parámetros
| Parámetro | Description |
|---|---|
<query> |
Criterios de selección para los documentos que se van a actualizar. |
<arrayField> |
Campo que contiene la matriz que se va a actualizar. |
<value> |
Valor que se va a establecer para cada elemento coincidente de la matriz. |
Examples
Considere este documento de ejemplo de la colección de tiendas.
{
"_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
}
]
}
]
}
Ejemplo 1: Actualización de porcentajes de descuento
Esta consulta actualiza todos los elementos de la matriz de descuentos dentro de cada evento de promoción.
db.stores.updateOne(
{ _id: "905d1939-e03a-413e-a9c4-221f74055aac" },
{
$inc: {
"promotionEvents.$[].discounts.$[].discountPercentage": 5
}
}
)
Ejemplo 2: Actualización de ventas por categoría
Esta consulta aumenta las ventas totales de todas las categorías en 10% mediante el operador $[].
db.stores.update(
{ _id: "905d1939-e03a-413e-a9c4-221f74055aac" },
{
$mul: {
"sales.salesByCategory.$[].totalSales": 1.10
}
}
)