Descrição
Bulk.find.arrayFilters(<array of filter documents>)Determina quais elementos de array modificar para uma operação de atualização em um campo de array:
Bulk.find(<query>).arrayFilters([ <filter1>, ... ]).updateOne(<update>); Bulk.find(<query>).arrayFilters([ <filter1>, ... ]).update(<update>); No documento de atualização, use o operador posicional filtrado
$[<identifier>]para definir um identificador, que você então faz referência nos documentos de filtro de array. Você não pode ter um documento de filtro de array para um identificador se o identificador não estiver incluído no documento de atualização.O
<identifier>deve começar com uma letra minúscula e conter apenas caracteres alfanuméricos.Você pode incluir o mesmo identificador várias vezes no documento de atualização; entretanto, para cada identificador distinto (
$[identifier]) no documento de atualização, você deve especificar exatamente um documento de filtro de array correspondente. Ou seja, não é possível especificar vários documentos de filtro de array para o mesmo identificador. Por exemplo, se a instrução de atualização incluir o identificadorx(possivelmente várias vezes), você não poderá especificar o seguinte paraarrayFiltersque inclui 2 documentos de filtro separados parax:// INVALID [ { "x.a": { $gt: 85 } }, { "x.b": { $gt: 80 } } ] No entanto, você pode especificar condições compostas no mesmo identificador em um único documento de filtro, como nos exemplos a seguir:
// 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 } } ] Anexar ao método
Bulk.find()para especificar os filtros de array para as operaçõesupdateOne()eupdate().
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
Observação
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
Exemplo
var bulk = db.coll.initializeUnorderedBulkOp(); bulk.find({}).arrayFilters( [ { "elem.grade": { $gt: 85 } } ] ).updateOne( { $set: { "grades.$[elem].mean" : 70 } } ); bulk.execute();