Ruby on Rails
Mongoid
खोज…
स्थापना
सबसे पहले, Mongoid
को अपने Gemfile
जोड़ें:
gem "mongoid", "~> 4.0.0"
और फिर bundle install
चलाएं। या बस चलाएं:
$ gem install mongoid
स्थापना के बाद, विन्यास फाइल बनाने के लिए जनरेटर चलाएं:
$ rails g mongoid:config
जो फ़ाइल (myapp)/config/mongoid.yml
।
एक मॉडल बनाना
एक मॉडल बनाएं (इसे User
कॉल करने दें)
$ rails g model User
जो फ़ाइल app/models/user.rb
उत्पन्न करेगा:
class User
include Mongoid::Document
end
यह आपको एक मॉडल (यद्यपि एक id
फ़ील्ड के अलावा कुछ भी नहीं) की आवश्यकता है। ActiveRecord
विपरीत, कोई माइग्रेशन फ़ाइल नहीं है। मॉडल के लिए सभी डेटाबेस जानकारी मॉडल फ़ाइल में निहित है।
जब आप इसे बनाते हैं तो टाइमस्टैम्प स्वचालित रूप से आपके मॉडल में शामिल नहीं होते हैं। अपने मॉडल में created_at
और updated_at
जोड़ने के लिए, जोड़ें
include Mongoid::Timestamps
आपके मॉडल के नीचे include Mongoid::Document
जैसे शामिल हैं:
class User
include Mongoid::Document
include Mongoid::Timestamps
end
खेत
Mongoid प्रलेखन के अनुसार, 16 मान्य फ़ील्ड प्रकार हैं:
- सरणी
- BigDecimal
- बूलियन
- दिनांक
- दिनांक और समय
- फ्लोट
- हैश
- पूर्णांक
- BSON :: ObjectId
- BSON :: बाइनरी
- रेंज
- regexp
- तार
- प्रतीक
- समय
- TimeWithZone
एक फ़ील्ड जोड़ने के लिए (इसे name
और इसे एक String
कहें), इसे अपनी मॉडल फ़ाइल में जोड़ें:
field :name, type: String
डिफ़ॉल्ट मान सेट करने के लिए, बस default
विकल्प में पास करें:
field :name, type: String, default: ""
क्लासिक एसोसिएशन
Mongoid क्लासिक ActiveRecord
संघों की अनुमति देता है:
- एक-से-एक:
has_one
/belongs_to
- एक से कई:
has_many
/belongs_to
- कई-कई:
has_and_belongs_to_many
एक एसोसिएशन जोड़ने के लिए (उपयोगकर्ता has_many
पदों कहते हैं), आप इसे अपने User
मॉडल फ़ाइल में जोड़ सकते हैं:
has_many :posts
और यह आपकी Post
मॉडल फ़ाइल के लिए:
belongs_to :user
यह आपके Post
मॉडल में एक user_id
फ़ील्ड जोड़ देगा, आपके Post
क्लास में एक user
विधि जोड़ देगा, और आपके User
वर्ग में एक posts
विधि जोड़ देगा।
एंबेडेड एसोसिएशन
Mongoid एंबेडेड एसोसिएशन की अनुमति देता है:
- एक-से-एक:
embeds_one
/embedded_in
- एक से कई:
embeds_many
/embedded_in
एक एसोसिएशन जोड़ने के लिए (उपयोगकर्ता को embeds_many
करने के लिए कहते हैं), इसे अपनी User
फ़ाइल में जोड़ें:
embeds_many :addresses
और यह आपके Address
मॉडल फ़ाइल में है:
embedded_in :user
यह आपके User
मॉडल में Address
को एम्बेड करेगा, आपके User
वर्ग में addresses
विधि जोड़ देगा।
डेटाबेस कॉल
Mongoid ActiveRecord
समान सिंटैक्स होने की कोशिश करता है जब वह कर सकता है। यह इन कॉल्स (और कई और) का समर्थन करता है
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