MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Lời khuyên về việc di chuyển từ MongoMapper sang Mongoid?

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ên Error , 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:

    1. Chọn đối tượng theo mảng:MM:Model.where(:attr.in => [ ] )Model.where(:attr => [ ] ) . Mongoid chỉ là:Model.where(:attr.in => [ ] )

    2. 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)

    3. 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 || "") .

    4. Trong MM:Model.find_or_initialize_by_name("BOB") . Trong Mongoid Model.find_or_initialize_by(name: "BOB") .

    5. 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.

    6. 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) .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose:_id tùy chỉnh có cần phải được khai báo dưới dạng chỉ mục và là duy nhất không

  2. Đột ngột ném lỗi FluentMongo

  3. Tải trọng đọc bị lệch trên bộ bản sao Mongo

  4. Cách cấu hình Rebus để có các chủ đề dựa trên loại trình xử lý

  5. Kết hợp Spring-Data cho MongoDB và ElasticSearch