sql >> Databasteknik >  >> NoSQL >> MongoDB

Metod fungerar i utveckling men inte produktion Rails MongoDB

Om du har en Coupon Mongoid-modellen då skulle samlingen i MongoDB-skalet vara db.coupons . Det skulle förklara varför:

db.Coupon.insert(...)

i MongoDB-skalet ger inte det du förväntar dig att hitta i din Rails-kod.

Så långt som Neils kommentar om $exists kontra explicit nil checkar går, jag tror att du verkligen vill ha nil (AKA null inuti MongoDB) kontroller. Tänk på detta i MongoDB-skalet:

> 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") }

Så vi har en samling med dokument som har n , har inte n , har explicit null värden för n , och icke-null värden för n .

Då kan vi se skillnaden mellan Mongoid-frågor som :n => nil :

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

och :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 }

och :n => { :$exists => false } :

> db.models.find({ n: { $exists: false } })
{ "_id" : ObjectId("571546ecce2934dadf37947c") }

:expires_at => nil frågor kommer att hitta dokument som inte har en expires_at samt dokument där expires_at var uttryckligen inställd på nil . Båda dessa fall kommer att hända med Mongoid om du inte är noga med att anropa remove_attribute istället för att tilldela en nil och båda fallen betyder "inget utgångsdatum".




  1. FEL:underordnad process misslyckades, avslutades med felnummer 48

  2. Behöver jag stänga anslutningen av mongodb?

  3. MongoDB Analytics-serien:SlamData – Kör SQL och bygg rapporter direkt på MongoDB

  4. Mongodb snabbkorrigering KB2731284