Đối với các mặt hàng mới
db.cmpe285.update({"username":username}, {"$push": {"stocks":{"name":stock_symbol,"count":allotment,"price":initial_share_price}}})
Để cập nhật các mặt hàng hiện có , giả sử bạn đang cập nhật phân bổ. bạn cần sử dụng toán tử vị trí ($) với giá trị mảng được tham chiếu trong truy vấn.
db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})
Đối với các mặt hàng đang nâng cấp , đây là một quy trình 2 bước. Trước tiên, bạn sẽ cần chạy truy vấn giống như cách bạn làm để cập nhật các mục hiện có như ở trên và kiểm tra phản hồi kết quả ghi từ truy vấn trên và kiểm tra số lượng đã sửa đổi. Nếu số lượng được sửa đổi là 0 có nghĩa là chúng tôi cần phải bổ sung và sau đó bạn sẽ chỉ làm điều đó như trong trường hợp thêm các mục mới.
db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})
Kiểm tra WriteResult , nếu được sửa đổi bằng 0.
db.cmpe285.update({"username":username}, {"$push": {"stocks":{"name":stock_symbol,"count":allotment2,"price":initial_share_price}}})
Nếu số được sửa đổi bằng 1, thì việc nâng cấp đã thành công.