2012-11-11 13 views
5

Có cách nào được xây dựng trong để làm cho upsert (chèn nếu không tồn tại) trong Mongoid? Hoặc tôi có nên kiểm tra xem một mục có tồn tại đầu tiên và chỉ sau đó mới có chèn/cập nhật không?Upsert ở Mongoid

Trả lời

2

Có một phương pháp tích hợp upsert trong Mongoid đã

Model # upsert Thực hiện upsert MongoDB trên tài liệu. Nếu tài liệu tồn tại trong cơ sở dữ liệu, tài liệu sẽ bị ghi đè bằng các thuộc tính hiện tại của tài liệu trong bộ nhớ . Nếu tài liệu không tồn tại trong cơ sở dữ liệu, nó sẽ được chèn vào. Lưu ý rằng điều này chỉ chạy cuộc gọi lại {trước | sau | xung quanh}.

Taken từ http://mongoid.org/en/mongoid/docs/persistence.html

+0

Làm thế nào để làm điều đó cho has_many. Giả sử Người dùng có nhiều Sách, tôi muốn sách của người dùng được cập nhật, thêm, sửa đổi? User.first.upsert (: books_attributes =>?) ??? – user1735921

+0

@ user1735921it đã được một thời gian kể từ khi tôi đã sử dụng MongoDB, nhưng xem nhanh các tài liệu hiện tại cho thấy - https://docs.mongodb.com/ruby-driver/master/tutorials/ruby-driver-bulk-operations/# cập nhật nhiều – gef