Sök…


Installation

Lägg först Mongoid till din Gemfile :

gem "mongoid", "~> 4.0.0"

och kör sedan bundle install . Eller bara springa:

$ gem install mongoid

Efter installationen kör du generatorn för att skapa konfigurationsfilen:

$ rails g mongoid:config

vilket skapar filen (myapp)/config/mongoid.yml .

Skapa en modell

Skapa en modell (låter oss kalla den User ) genom att köra:

$ rails g model User

vilket genererar app/models/user.rb :

class User
  include Mongoid::Document

end

Detta är allt du behöver för att ha en modell (om än inget annat än ett id fält). Till skillnad från ActiveRecord finns det inga migrationsfiler. All databasinformation för modellen finns i modellfilen.

Tidsstämplar ingår inte automatiskt i din modell när du genererar den. Lägg till created_at och updated_at till din modell

include Mongoid::Timestamps

till din modell under include Mongoid::Document så:

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

end

Fields

Enligt Mongoid-dokumentationen finns det 16 giltiga fälttyper:

  • Array
  • BigDecimal
  • Boolean
  • Datum
  • Datum Tid
  • Flyta
  • Hash
  • Heltal
  • BSON :: ObjectId
  • BSON :: Binary
  • Räckvidd
  • Regexp
  • Sträng
  • Symbol
  • Tid
  • TimeWithZone

För att lägga till ett fält (låt oss kalla det name och ha det vara en String ), lägg till detta till din modell fil:

field :name, type: String

För att ställa in ett standardvärde, ange bara default :

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

Klassiska föreningar

Mongoid tillåter de klassiska ActiveRecord föreningarna:

  • En-till-en: has_one / belongs_to
  • En-till-många: has_many / belongs_to
  • Många till många: has_and_belongs_to_many

För att lägga till en förening (låt säga de has_many inlägg), kan du lägga detta till din User modell fil:

has_many :posts

och detta till din Post modellfil:

belongs_to :user

Detta kommer att lägga till en user_id fält i Post modell, lägga till en user till Post klass och lägga till en posts metod för att din User

Inbyggda föreningar

Mongoid tillåter inbäddade föreningar:

  • En-till-en: embeds_one / embedded_in
  • En-till-många: embeds_many / embedded_in

För att lägga till en förening (låt säga användaren embeds_many adresser), lägg till detta till din User fil:

embeds_many :addresses

och detta till din Address :

embedded_in :user

Detta kommer bädda Address i User modell, lägga till en addresses metod för att din User

Databassamtal

Mongoid försöker ha liknande syntax som ActiveRecord när det kan. Det stöder dessa samtal (och många fler)

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow