Dica
O MongoDB também fornece o método Mongo.bulkWrite() para executar operações de gravação em massa.
Descrição
Bulk.find.update(<update>)Adiciona uma operação de atualização do
multiem uma lista de operações em massa. O método atualiza campos específicos em documentos existentes.Use the
Bulk.find()method to specify the condition that determines which documents to update. TheBulk.find.update()method updates all matching documents. To specify a single document update, seeBulk.find.updateOne().Bulk.find.update()aceita o seguinte parâmetro:ParâmetroTipoDescriçãodocumento ou pipeline
As modificações a serem aplicadas. Podem ser uma dos seguintes:
Um documento de atualização, que contém apenas expressões de operadores de atualização.
Um pipeline de agregação, que contém apenas os seguintes estágios de agregação:
$addFieldse seu alias$set$replaceRoote seu alias$replaceWith
Para obter mais informações sobre o parâmetro de modificação de atualização, consulte a página de referência
db.collection.updateMany().A soma do documento
<query>associado doBulk.find()e do documento de atualização deve ser menor ou igual ao tamanho máximo do documento BSON.Para especificar um upsert: true para esta operação, utilize com
Bulk.find.upsert(). ComBulk.find.upsert(), se nenhum documento corresponder à condição de queryBulk.find(), a operação de atualização inserirá somente um único documento.Para especificar
arrayFilterspara atualizar elementos de array específicos, utilize comBulk.find.arrayFilters().Para especificar o índice a utilizar para o
Bulk.find()associado, consulteBulk.find.hint().Para substituir um documento por atacado, consulte
Bulk.find.replaceOne().
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
O exemplo a seguir inicializa um Bulk() construtor de operações para a items coleção e adiciona várias multi operações de atualização à lista de operações.
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } ); bulk.find( { item: null } ).update( { $set: { item: "TBD" } } ); bulk.execute();
Atualização com aggregation pipeline
Os métodos de atualização podem aceitar um pipeline de agregação. Por exemplo, os seguintes usos:
A variável de agregação
NOW, que produz a data/hora atual e pode fornecer comportamento semelhante a uma expressão de operador de atualização$currentDate. Para acessar variáveis de agregação, prefixe a variável com cifrões duplos$$e coloque entre aspas.
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "P" } ).update( [ { $set: { points: 0, lastModified: "$$NOW" } } ] ); bulk.execute();