MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Metode berfungsi dalam pengembangan tetapi tidak produksi Rails MongoDB

Jika Anda memiliki Coupon Model mongoid maka koleksi di shell MongoDB akan menjadi db.coupons . Itu akan menjelaskan alasannya:

db.Coupon.insert(...)

di shell MongoDB tidak memberikan apa yang Anda harapkan dalam kode Rails Anda.

Sejauh komentar Neil tentang $exists versus nil yang eksplisit cek berjalan, saya pikir Anda benar-benar ingin nil (AKA null di dalam MongoDB) cek. Pertimbangkan ini di shell 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") }

Jadi kami memiliki koleksi dengan dokumen yang memiliki n , tidak memiliki n , memiliki null explicit eksplisit nilai untuk n , dan non-null nilai untuk n .

Kemudian kita dapat melihat perbedaan antara query Mongoid seperti :n => nil :

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

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

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

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

Jadi :expires_at => nil kueri akan menemukan dokumen yang tidak memiliki expires_at serta dokumen di mana expires_at secara eksplisit diatur ke nil . Kedua kasus tersebut akan terjadi dengan Mongoid kecuali jika Anda berhati-hati untuk memanggil remove_attribute alih-alih menetapkan nil dan kedua kasus berarti "tidak ada tanggal kedaluwarsa".




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak bisa mendapatkan paket Accounts-Base untuk menunjuk ke database yang benar

  2. Instal/Pengaturan Mongo di Pohon Kacang Elastis

  3. Tidak dapat mengimpor MongoClient

  4. Mongodb membuka dokumen bersarang

  5. Mongodb mengumpulkan tiga koleksi