Descripción
Bulk.find.arrayFilters(<array of filter documents>)Determina qué elementos del arreglo se deben modificar para una operación de actualización en un campo de arreglo:
Bulk.find(<query>).arrayFilters([ <filter1>, ... ]).updateOne(<update>); Bulk.find(<query>).arrayFilters([ <filter1>, ... ]).update(<update>); En el documento de actualización, usa el
$[<identifier>]operador posicional filtrado para definir un identificador, que luego se referencia en los documentos de filtros de arreglos. No se puede tener un documento de filtro de arreglo para un identificador si el identificador no está incluido en el documento de actualización.El
<identifier>debe comenzar con una letra minúscula y contener solo caracteres alfanuméricos.Puedes incluir el mismo identificador varias veces en el documento de actualización; sin embargo, para cada identificador distinto (
$[identifier]) en el documento de actualización, debes especificar exactamente un documento de filtro de arreglo correspondiente. Es decir, no puedes especificar múltiples documentos de filtro de arreglo para el mismo identificador. Por ejemplo, si la instrucción de actualizar incluye el identificadorx(posiblemente varias veces), no puedes especificar lo siguiente paraarrayFiltersque incluya dos documentos de filtro separados parax:// INVALID [ { "x.a": { $gt: 85 } }, { "x.b": { $gt: 80 } } ] Sin embargo, se pueden especificar condiciones compuestas sobre el mismo identificador en un único documento de filtro, como en los siguientes ejemplos:
// Example 1 [ { $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] } ] // Example 2 [ { $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] } ] // Example 3 [ { "x.a": { $gt: 85 }, "x.b": { $gt: 80 } } ] Agregue al método
Bulk.find()para especificar los filtros de arreglo para las operacionesupdateOne()yupdate().
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
Ejemplo
var bulk = db.coll.initializeUnorderedBulkOp(); bulk.find({}).arrayFilters( [ { "elem.grade": { $gt: 85 } } ] ).updateOne( { $set: { "grades.$[elem].mean" : 70 } } ); bulk.execute();