Xét một cấu trúc tài liệu Mongo đơn giản:MongoDB: upserting: chỉ đặt giá trị nếu tài liệu đã được chèn
{_id, firstTime, lastTime}
Các khách hàng cần để chèn một tài liệu với một ID được biết đến, hoặc cập nhật tài liệu hiện có. 'LastTime' sẽ luôn được đặt thành thời gian mới nhất. Đối với 'firstTime', nếu tài liệu đang được chèn, thì 'firstTime' sẽ được đặt thành thời gian hiện tại. Tuy nhiên, nếu tài liệu đã được tạo, thì 'firstTime' vẫn không thay đổi. Tôi muốn làm điều đó hoàn toàn với những thăng trầm (để tránh nhìn lên).
Tôi đã thu thập thông tin http://www.mongodb.org/display/DOCS/Updating, nhưng tôi không thấy cách hoạt động cụ thể đó có thể được thực hiện.
Tôi không tin rằng đây là điều gì đó không hợp lý, có các hoạt động $ push và $ addToSet thực hiện điều đó một cách hiệu quả trên các trường mảng, không có gì giống như trên các trường đơn giản. Nó giống như có nên có một cái gì đó như hoạt động $ setIf.
* nếu tài liệu đã được tạo, trường sẽ vẫn không thay đổi * không được gọi là upsert (như trong tiêu đề của bạn) –
@ om-nom-nom Tôi đã phác thảo trường hợp đơn giản nhất, tôi đã cập nhật mô tả, do đó, có một trường luôn được cập nhật. –
Có vẻ như tính năng này được nhắm mục tiêu cho 2,4: https://jira.mongodb.org/browse/SERVER-340 – JohnnyHK