$[<identifier>] - Amazon DocumentDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

$[<identifier>]

El operador posicional $[<identifier>] filtrado actualiza todos los elementos de la matriz que coinciden con las condiciones de filtro especificadas. Se utiliza con la arrayFilters opción de actualizar selectivamente los elementos de la matriz.

Parámetros

  • field.$[identifier]: El campo de matriz con el operador posicional filtrado.

  • arrayFilters: un conjunto de condiciones de filtro que determinan qué elementos se van a actualizar.

Ejemplo (MongoDB Shell)

El siguiente ejemplo demuestra el uso del $[<identifier>] operador para actualizar elementos de matriz específicos en función de una condición.

Cree documentos de muestra

db.students.insertOne({ _id: 1, name: "Alice", grades: [ { subject: "Math", score: 85 }, { subject: "Science", score: 92 }, { subject: "History", score: 78 } ] });

Ejemplo de consulta

db.students.updateOne( { _id: 1 }, { $inc: { "grades.$[elem].score": 5 } }, { arrayFilters: [{ "elem.score": { $gte: 80 } }] } );

Salida

{ "_id" : 1, "name" : "Alice", "grades" : [ { "subject" : "Math", "score" : 90 }, { "subject" : "Science", "score" : 97 }, { "subject" : "History", "score" : 78 } ] }

Ejemplos de código

Para ver un ejemplo de código para usar el $[<identifier>] operador, elija la pestaña del idioma que desee usar:

Node.js
const { MongoClient } = require('mongodb'); async function updateDocument() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const collection = db.collection('students'); await collection.updateOne( { _id: 1 }, { $inc: { "grades.$[elem].score": 5 } }, { arrayFilters: [{ "elem.score": { $gte: 80 } }] } ); const updatedDocument = await collection.findOne({ _id: 1 }); console.log(updatedDocument); await client.close(); } updateDocument();
Python
from pymongo import MongoClient def update_document(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client.test collection = db.students collection.update_one( {'_id': 1}, {'$inc': {'grades.$[elem].score': 5}}, array_filters=[{'elem.score': {'$gte': 80}}] ) updated_document = collection.find_one({'_id': 1}) print(updated_document) client.close() update_document()