MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

PyMongo Aggiorna il documento con più record

Per i nuovi articoli

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

Per aggiornare gli elementi esistenti , supponendo che tu stia aggiornando l'assegnazione. è necessario utilizzare l'operatore posizionale($) con il valore dell'array a cui si fa riferimento nella query.

db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})

Per aggiornare gli articoli , è un processo in 2 fasi. Dovrai prima eseguire la query nello stesso modo in cui lo fai per aggiornare gli elementi esistenti come sopra e controllare la risposta del risultato di scrittura dalla query precedente e controllare il conteggio modificato. Se il conteggio modificato è 0 significa che dobbiamo eseguire l'upsert e quindi lo farai semplicemente come nel caso dell'aggiunta di nuovi elementi.

db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})

Controlla il WriteResult , se nmodificato uguale a 0.

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

Se nmodificato è uguale a 1, upserting riuscito.