Suche…


Installation

Zuerst fügen Sie Mongoid zu Ihrem Gemfile :

gem "mongoid", "~> 4.0.0"

und dann bundle install ausführen. Oder einfach laufen:

$ gem install mongoid

Führen Sie nach der Installation den Generator aus, um die Konfigurationsdatei zu erstellen:

$ rails g mongoid:config

(myapp)/config/mongoid.yml wird die Datei (myapp)/config/mongoid.yml .

Ein Modell erstellen

Erstellen Sie ein Modell (nennen User es User ), indem Sie User ausführen:

$ rails g model User

app/models/user.rb wird die Datei app/models/user.rb :

class User
  include Mongoid::Document

end

Das ist alles, was Sie brauchen, um ein Modell zu haben (allerdings nur ein id Feld). Im Gegensatz zu ActiveRecord gibt es keine Migrationsdateien. Alle Datenbankinformationen für das Modell sind in der Modelldatei enthalten.

Zeitstempel werden bei der Generierung nicht automatisch in Ihr Modell aufgenommen. created_at updated_at zum Hinzufügen von created_at und updated_at zu Ihrem Modell hinzu

include Mongoid::Timestamps

Zu deinem Modell darunter include Mongoid::Document so hinzu:

class User
  include Mongoid::Document
  include Mongoid::Timestamps

end

Felder

Gemäß der mongoiden Dokumentation gibt es 16 gültige Feldtypen:

  • Array
  • BigDecimal
  • Boolean
  • Datum
  • Terminzeit
  • Schweben
  • Hash
  • Ganze Zahl
  • BSON :: ObjectId
  • BSON :: Binär
  • Angebot
  • Regexp
  • String
  • Symbol
  • Zeit
  • TimeWithZone

Um ein Feld hinzuzufügen (nennen wir es den name und lassen Sie es einen String ), fügen Sie es Ihrer Modelldatei hinzu:

field :name, type: String

Um einen Standardwert festzulegen, übergeben Sie einfach die default :

field :name, type: String, default: ""

Klassische Assoziationen

Mongoid erlaubt die klassischen ActiveRecord Assoziationen:

  • Eins-zu-Eins: has_one / belongs_to
  • Eins-zu-Viele: has_many / belongs_to
  • Many-to-many: has_and_belongs_to_many

Um eine Assoziation hinzuzufügen (sagen has_many Beiträge des Benutzers has_many ), können Sie diese zu Ihrer User hinzufügen:

has_many :posts

und dies zu deiner Post Modelldatei:

belongs_to :user

Dies fügt ein Feld user_id in Ihrem Post Modell hinzu, fügt Ihrer Post Klasse eine user hinzu und fügt Ihrer User Klasse eine posts Methode hinzu.

Eingebettete Assoziationen

Mongoid erlaubt eingebettete Assoziationen:

  • Eins-zu-Eins: embeds_one / embedded_in
  • Eins-zu-Viele: embeds_many / embedded_in

embeds_many Sie diese zu Ihrer User hinzu, um eine Zuordnung hinzuzufügen (sagen wir die embeds_many Adressen " embeds_many ):

embeds_many :addresses

und dies in Ihre Address :

embedded_in :user

Dadurch wird Address in Ihr User eingebettet und der User Klasse eine addresses Methode hinzugefügt.

Datenbankaufrufe

Mongoid versucht , ähnliche Syntax haben ActiveRecord , wenn er kann. Es unterstützt diese Anrufe (und viele mehr)

User.first #Gets first user from the database

User.count #Gets the count of all users from the database

User.find(params[:id]) #Returns the user with the id found in params[:id]

User.where(name: "Bob") #Returns a Mongoid::Criteria object that can be chained
                        #with other queries (like another 'where' or an 'any_in')
                        #Does NOT return any objects from database

User.where(name: "Bob").entries #Returns all objects with name "Bob" from database

User.where(:name.in => ['Bob', 'Alice']).entries #Returns all objects with name "Bob" or "Alice" from database

User.any_in(name: ["Bob", "Joe"]).first #Returns the first object with name "Bob" or "Joe"
User.where(:name => 'Bob').exists? # will return true if there is one or more users with name bob


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow