Trong bài đăng this, câu trả lời được chấp nhận giải thích rằng bạn không thể có cùng các trường dưới $set
và $setOnInsert
trong thao tác upsert.
Ai đó có thể giải thích lý do vì sao đây là? Có vẻ như $setOnInsert
không nên xung đột với $set
, vì tài liệu cũ được sử dụng khi chèn tài liệu và tài liệu sau được sử dụng khi tài liệu được cập nhật.
Thành thực mà nói, tôi không có một lời giải thích cho lý do tại sao đây là trường hợp bây giờ; Tôi cũng muốn thấy điều này được thực hiện. Có một yêu cầu nâng cao, [SERVER-10711] (https://jira.mongodb.org/browse/SERVER-10711), để cho phép '$ set' và' $ setOnInsert' hoạt động trong cùng một bản cập nhật trên cùng một trường . Bạn có thể nhận xét, xem và nêu lên vấn đề đó để nâng cao mức độ ưu tiên của nó. – wdberkeley
cảm ơn bạn đã chỉ ra điều này @wdberkeley. Bạn có biết nếu có một giải pháp cho điều này mà không cần hai truy vấn? – jtmarmon