Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Bulk.find.arrayFilters()

Nesta página

  • Descrição
  • Exemplo
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 upgrade, use o operador posicional filtrado $[<identifier>] para definir um identificador, que você então faz referência nos documentos do filtro de matriz. Você não pode ter um documento de filtro de matriz para um identificador se o identificador não estiver incluído no documento de atualização.

Observaçã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 identificador x (possivelmente várias vezes), você não poderá especificar o seguinte para arrayFilters que inclui 2 documentos de filtro separados para x:

// 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ções updateOne() e update().

var bulk = db.coll.initializeUnorderedBulkOp();
bulk.find({}).arrayFilters( [ { "elem.grade": { $gt: 85 } } ] ).updateOne( { $set: { "grades.$[elem].mean" : 70 } } );
bulk.execute();

Dica

Veja também:

Voltar

Bulk.find()

Próximo

Bulk.find.collation()

Nesta página