MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Методът работи в разработката, но не и в производството Rails MongoDB

Ако имате Coupon Mongoid модел, тогава колекцията в обвивката на MongoDB ще бъде db.coupons . Това обяснява защо:

db.Coupon.insert(...)

в обвивката на MongoDB не предоставя това, което очаквате да намерите във вашия код на Rails.

Що се отнася до коментара на Нийл за $exists спрямо изрично nil проверките вървят, мисля, че наистина искате nil (известен още като null вътре в 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 , имат изричен null стойности за n и не-null стойности за n .

След това можем да видим разликата между Mongoid заявки като :n => nil :

> db.models.find({ n: null })
{ "_id" : ObjectId("571546e7ce2934dadf37947b"), "n" : null }
{ "_id" : ObjectId("571546ecce2934dadf37947c") }

и :n.exists => true (известен още като :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 . И двата случая ще се случат с Mongoid, освен ако не внимавате да извикате remove_attribute вместо да присвоите nil и двата случая означават "без дата на изтичане".




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb foreach за вложена колекция за актуализиране/копиране на документи в друга колекция

  2. Как да използвате sql като в PyMongo?

  3. Проблем с MongoDB и upsert

  4. Как да наблюдавате MongoDB с Prometheus &ClusterControl

  5. Алтернатива за итерация на курсора на Pymongo