sql >> Database >  >> NoSQL >> MongoDB

Methode werkt in ontwikkeling maar niet in productie Rails MongoDB

Als u een Coupon . heeft Mongoid-model, dan is de verzameling in de MongoDB-shell db.coupons . Dat zou verklaren waarom:

db.Coupon.insert(...)

in de MongoDB-shell biedt niet wat je verwacht te vinden in je Rails-code.

Voor zover Neil's opmerking over $exists versus expliciete nil controles gaan, ik denk dat je echt nil . wilt (ook bekend als null binnen MongoDB) controles. Overweeg dit in de MongoDB-shell:

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

We hebben dus een verzameling met documenten die n . hebben , heb geen n , hebben expliciete null waarden voor n , en niet-null waarden voor n .

Dan kunnen we het verschil zien tussen mongoïde zoekopdrachten zoals :n => nil :

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

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

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

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

Dus de :expires_at => nil zoekopdrachten zullen documenten vinden die geen expires_at . hebben evenals documenten waar expires_at was expliciet ingesteld op nil . Beide gevallen zullen gebeuren met Mongoid, tenzij je voorzichtig bent om remove_attribute aan te roepen in plaats van een nil toe te wijzen en beide gevallen betekenen "geen vervaldatum".




  1. Jedis - Wanneer returnBrokenResource() te gebruiken

  2. Hoe gebruikersinformatie van mongodb te krijgen in node.js

  3. MongoDB findAndModify. Is het echt atomair? Hulp bij het schrijven van een gesloten update-oplossing

  4. NodeJS, Mongoose:hoe u gerelateerde gegevens kunt krijgen met behulp van mangoest