Bulk.find.update()
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
multi
em 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 pipelineAs modificações a serem aplicadas. Podem ser uma dos seguintes:
Atualizar documentoContém somente atualizar expressões do operador.Pipeline de agregaçãoContém apenas os seguintes estágios de agregação:
$addFields
e seu alias$set
$replaceRoot
e seu nome alternativo$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
arrayFilters
para 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()
.
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();