За нови артикули
db.cmpe285.update({"username":username}, {"$push": {"stocks":{"name":stock_symbol,"count":allotment,"price":initial_share_price}}})
За актуализиране на съществуващи елементи , ако приемем, че актуализирате разпределението. трябва да използвате позиционен оператор($) със стойност на масива, посочена в заявката.
db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})
За добавяне на елементи , това е процес от 2 стъпки. Първо ще трябва да изпълните заявката по същия начин, както го правите за актуализиране на съществуващи елементи, както по-горе, и да проверите отговора на резултата от записа от заявката по-горе и да проверите променения брой. Ако броят на промените е 0, това означава, че трябва да вмъкнем и тогава просто ще го направите, както в случая с добавяне на нови елементи.
db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})
Проверете WriteResult , ако nmodified е равно на 0.
db.cmpe285.update({"username":username}, {"$push": {"stocks":{"name":stock_symbol,"count":allotment2,"price":initial_share_price}}})
Ако nmodified е равно на 1, качването е успешно.