अगर आपके पास 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 निर्दिष्ट करने के बजाय और दोनों मामलों का अर्थ है "कोई समाप्ति तिथि नहीं"।