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.updateOne(<update>)Adiciona uma única operação de atualização de documento a uma lista de operações em massa.
Utilize o método
Bulk.find()para especificar a condição que determina qual documento atualizar. O métodoBulk.find.updateOne()limita a atualização a um único documento. Para atualizar vários documentos, consulteBulk.find.update().Bulk.find.updateOne()aceita o seguinte parâmetro:ParâmetroTipoDescriçãodocumento ou pipeline
As modificações a serem aplicadas. Podem ser uma dos seguintes:
Um documento de substituição
Contém apenas pares de campos e valores.
Consulte também
Bulk.find.replaceOne().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.updateOne().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().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 também
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.
Comportamento
Se o documento <update> contiver apenas expressões de operador de atualização , como em:
{ $set: { status: "D" }, $inc: { points: 2 } }
Em seguida, Bulk.find.updateOne() atualiza apenas os campos correspondentes, status e points, no documento.
Exemplo
O exemplo a seguir inicializa um Bulk() construtor de operações para a items coleção e adiciona várias updateOne() operações à lista de operações.
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "D" } ).updateOne( { $set: { status: "I", points: "0" } } ); 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" } ).updateOne( [ { $set: { points: 0, lastModified: "$$NOW" } } ] ); bulk.execute();