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')
-
Error
là 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.id
trong đố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'}).first
và 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)
.
-