MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Documento de atualização do PyMongo com vários registros


Para novos itens
db.cmpe285.update({"username":username}, {"$push": {"stocks":{"name":stock_symbol,"count":allotment,"price":initial_share_price}}})

Para atualizar itens existentes , supondo que você esteja atualizando a cota. você precisa usar o operador posicional ($) com o valor da matriz referenciado na consulta.
db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})

Para itens de upsert , é um processo de 2 etapas. Primeiro, você precisará executar a consulta da mesma maneira que faz para atualizar os itens existentes acima e inspecionar a resposta do resultado da gravação da consulta acima e verificar a contagem modificada. Se a contagem modificada for 0 significa que precisamos fazer o upsert e você fará isso como no caso de adicionar novos itens.
db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})

Verifique o WriteResult , se nmodificado igual a 0.
db.cmpe285.update({"username":username}, {"$push": {"stocks":{"name":stock_symbol,"count":allotment2,"price":initial_share_price}}})

Se o nmodified for igual a 1, o upserting foi bem-sucedido.