Cả hai đều là Thư viện MongoDB tuyệt vời cho Ruby. Nhưng nếu bạn muốn chuyển đổi, đây là một số lưu ý:
Di chuyển MongoMapper ORM sang Mongoid ORM - Lưu ý
-
Định cấu hình kết nối cơ sở dữ liệu.
-
Thay thế tệp yaml cấu hình (bao gồm cấu hình bản sao).
-
Định cấu hình các tùy chọn cụ thể của Mongoid. ví dụ:-
raise_not_found_error: false. nếu bạn không muốn gặp lỗi mỗi khi truy vấn không trả về gì ... -
Thay đổi định nghĩa tất cả các mô hình -
include MongoMapper::Documentđểinclude Mongoid::Document -
Thay đổi định dạng cho tất cả các định nghĩa trường.
-
Trong mongoid, bạn nên xác định dấu thời gian:
include Mongoid::Timestamps -
Thay đổi xác thực. ví dụ:
:in => ARRAY, sẽ là:validates :name, presence: true, inclusion: { in: ARRAY } -
Thay đổi chỉ mục.
-
Thay đổi định dạng order_by. ví dụ:MM:
Model.all(:order => 'name'). Mongoid:Model.order_by('name ASC') -
Errorlà một từ khóa trong Mongoid. Vì vậy, nếu bạn có một mô hình có tênError, bạn nên thay đổi nó. -
Định dạng phân trang khác, sử dụng đá quý khác.
-
Mục nhập chỉ mục khóa chính trong MM là
id. Trong Mongoid đó là_id, nếu bạn có mã khác dựa trên.idtrong đối tượng JSON, bạn có thể ghi đè as_json trong Mô hình của bạn để tạo cấu trúc JSON mà bạn muốn. -
Trong MM,
Model.fields(:id, :name), giới hạn các trường được trả về từ cơ sở dữ liệu đối với các trường được cung cấp cho phương thức. Trong Mongoid, đó làModel.only(:name,:id) -
Một số thay đổi truy vấn:
-
Chọn đối tượng theo mảng:MM:
Model.where(:attr.in => [ ] )vàModel.where(:attr => [ ] ). Mongoid chỉ là:Model.where(:attr.in => [ ] ) -
Tùy chọn bản đồ của MM tương đương với bản đồ của Mid.
Model.map(&:name)--to--Model.pluck(:name) -
Mongoid không hỗ trợ tìm truy vấn cho nil. ví dụ:
value = nil. Model.find(value)sẽ xuất hiện lỗi:"Calling Document .find with nil is invalid". Vì vậy, trong mongoid, chúng ta nên thực hiện:Model.find(value || ""). -
Trong MM:
Model.find_or_initialize_by_name("BOB"). Trong MongoidModel.find_or_initialize_by(name: "BOB"). -
MM có thể được sử dụng trong hai tùy chọn đó:
Model.where({:name => 'BOB'}).firstvà cảModel.first({:name => 'BOB'}). Mongoid chỉ có tùy chọn đầu tiên. -
Trong MM, để cập nhật nhiều đối tượng:
Model.set({conditions},attr_to_update). Trong Mongoid:Model.where(conditions).update_all(attr_to_update).
-