För nya föremål
db.cmpe285.update({"username":username}, {"$push": {"stocks":{"name":stock_symbol,"count":allotment,"price":initial_share_price}}})
För att uppdatera befintliga objekt , förutsatt att du uppdaterar tilldelningen. du måste använda positionsoperator($) med arrayvärde som refereras till i frågan.
db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})
För att upphäva objekt , det är en process i två steg. Du måste först köra frågan på samma sätt som du gör för att uppdatera befintliga objekt enligt ovan och inspektera skrivresultatsvaret från ovanstående fråga och kontrollera det ändrade antalet. Om det ändrade antalet är 0 betyder det att vi måste upphäva och då gör du det som när du lägger till nya objekt.
db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})
Kontrollera WriteResult , om nmodifierad lika med 0.
db.cmpe285.update({"username":username}, {"$push": {"stocks":{"name":stock_symbol,"count":allotment2,"price":initial_share_price}}})
Om den nmodifierade är lika med 1, lyckades upserteringen.