Dica
O MongoDB também fornece o método db.collection.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.Utilize o método
Bulk.find()para especificar a condição que determina quais documentos atualizar. O métodoBulk.find.update()atualiza todos os documentos correspondentes. Para especificar uma única atualização de documento, consulteBulk.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:
Atualizar documento
Contém somente atualizar expressões do operador.
Pipeline de agregação
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: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
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:
o estágio
$set, que pode fornecer um comportamento semelhante à expressão do operador de atualização$set,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();