No MongoDB, para fazer o update em uma tabela utilizando o valor da coluna para cálculo do novo valor, é necessário fazer o update registro por registro, através de um looping (forEach)
No exemplo abaixo, eu precisava utilizar um carrinho de compras, trocando o código do produto de 999 para 888. E precisava multiplicar a quantidade atual por 2.
No update simples, isso não é possível, eu consigo apenas setar um valor fixo, não consigo fazer cálculo utilizado o valor atual da coluna.
Segue a solução:
Table: YourTable
Primary Key: userId e Product
Set:
Product = 888
Quantity = Quantity x 2
db.YourTable.find({Product: "999"}).forEach( function(cursor) {
db.YourTable.update({$and: [ {"userId": cursor.userId}, {"Produto": cursor.Product} ]} //-- Where
, {$set:{"Product":"888", "quantity": cursor.quantity* 2) } } //-- Set
, {multi:true})
});
Nenhum comentário:
Postar um comentário