Nghe có vẻ như bạn muốn làm một "upert". MongoDB đã tích hợp sẵn hỗ trợ cho việc này. Chuyển một tham số bổ sung vào lệnh gọi update () của bạn:{upsert:true}. Ví dụ:
key = {'key':'value'}
data = {'key2':'value2', 'key3':'value3'};
coll.update(key, data, upsert=True); #In python upsert must be passed as a keyword argument
Điều này thay thế hoàn toàn khối if-find-else-update của bạn. Nó sẽ chèn nếu khóa không tồn tại và sẽ cập nhật nếu có.
Trước:
{"key":"value", "key2":"Ohai."}
Sau:
{"key":"value", "key2":"value2", "key3":"value3"}
Bạn cũng có thể chỉ định dữ liệu bạn muốn ghi:
data = {"$set":{"key2":"value2"}}
Bây giờ tài liệu đã chọn của bạn sẽ chỉ cập nhật giá trị của "key2" và để nguyên mọi thứ khác.