Nếu bạn đang chèn tài liệu, MongoDB cần kiểm tra xem tài liệu có cùng ObjectId có tồn tại hay không. Nếu nó tồn tại, tài liệu không thể được chèn vào.
Trường hợp tương tự áp dụng cho Cập nhật. Nó cần phải kiểm tra xem tài liệu có tồn tại hay không. Nếu không, không thể thực hiện cập nhật. Trường hợp truy vấn cập nhật của bạn sẽ chậm lại là khi nó không thể tìm thấy tài liệu dựa trên trường ObjectId / được lập chỉ mục của bạn.
Nếu không, hiệu suất để chèn / cập nhật tài liệu phải giống nhau.
Vì vậy, Chèn có thể giống như thế này // (Nhanh)
- (Kiểm tra tài liệu -> Không tìm thấy -> Chèn tài liệu mới) Khác
- (Kiểm tra tài liệu -> Tìm thấy -> Không thể chèn)
Và cập nhật với upert (có sẵn ObjectId) // (Nhanh)
- (Kiểm tra tài liệu -> Không tìm thấy -> Chèn tài liệu mới) Khác
- (Kiểm tra tài liệu -> Tìm thấy -> Cập nhật tài liệu)
Hoặc Cập nhật với upert (Không có ObjectId) // Quá trình này chậm
- (Tìm ObjectIds (Chậm) -> Không tìm thấy -> Chèn tài liệu mới) Khác
- (Tìm ObjectIds (Chậm) -> Đã tìm thấy -> Cập nhật tài liệu)