अगर आपके पास Coupon
है Mongoid मॉडल तो MongoDB शेल में संग्रह होगा db.coupons
. यह समझाएगा कि क्यों:
db.Coupon.insert(...)
MongoDB शेल में वह प्रदान नहीं कर रहा है जो आप अपने रेल कोड में खोजने की उम्मीद कर रहे हैं।
जहां तक नील की टिप्पणी $exists
. के बारे में है बनाम स्पष्ट nil
चेक चला जाता है, मुझे लगता है कि आप वास्तव में nil
want चाहते हैं (उर्फ nil
MongoDB के अंदर) जाँच करता है। MongoDB शेल में इस पर विचार करें:
> db.models.insert({ n: 11 })
> db.models.insert({ n: 0 })
> db.models.insert({ n: null })
> db.models.insert({ })
> db.models.find()
{ "_id" : ObjectId("571546e1ce2934dadf379479"), "n" : 11 }
{ "_id" : ObjectId("571546e4ce2934dadf37947a"), "n" : 0 }
{ "_id" : ObjectId("571546e7ce2934dadf37947b"), "n" : null }
{ "_id" : ObjectId("571546ecce2934dadf37947c") }
इसलिए हमारे पास दस्तावेज़ों का एक संग्रह है जिसमें n
. है , नहीं है n
, स्पष्ट nil
. है n
. के लिए मान , और गैर-nil
n
. के लिए मान ।
तब हम :n => nil
. जैसे Mongoid प्रश्नों के बीच अंतर देख सकते हैं :
> db.models.find({ n: null })
{ "_id" : ObjectId("571546e7ce2934dadf37947b"), "n" : null }
{ "_id" : ObjectId("571546ecce2934dadf37947c") }
और :n.exists => true
(AKA :n => { :$exists => true }
):
> db.models.find({ n: { $exists: true } })
{ "_id" : ObjectId("571546e1ce2934dadf379479"), "n" : 11 }
{ "_id" : ObjectId("571546e4ce2934dadf37947a"), "n" : 0 }
{ "_id" : ObjectId("571546e7ce2934dadf37947b"), "n" : null }
और :n => { :$exists => false }
:
> db.models.find({ n: { $exists: false } })
{ "_id" : ObjectId("571546ecce2934dadf37947c") }
तो :expires_at => nil
क्वेरीज़ में ऐसे दस्तावेज़ मिलेंगे जिनमें expires_at
नहीं है साथ ही दस्तावेज़ जहां expires_at
स्पष्ट रूप से nil
. पर सेट किया गया था . जब तक आप remove_attribute
पर कॉल करने में सावधानी नहीं बरतते, तब तक ये दोनों मामले Mongoid के साथ होंगे। nil
निर्दिष्ट करने के बजाय और दोनों मामलों का अर्थ है "कोई समाप्ति तिथि नहीं"।