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

Kueri mongoid berdasarkan nilai atau nilai default

Untuk menemukan dokumen yang tidak memiliki kunci tertentu, Anda ingin menggunakan $exists :

Jadi pemeriksaan keberadaan akan terlihat seperti:

Model.where(:field.exists => false)
Model.where(:field => { :$exists => false })

Perhatikan bahwa :field.exists pertama form menjadi form kedua sebelum dikirim ke MongoDB; Saya menyebutkan ini karena Anda tidak akan dapat menggunakan :field di tempat lain dalam kueri tanpa menggunakan $and atau $or untuk menggabungkan klausa::field.exists ekspansi dapat menyebabkan kunci dalam kueri Hash menimpa satu sama lain. Anda tidak akan mengalami masalah ini di sini, tetapi pengingat tidak ada salahnya.

Mencari true itu mudah:

Model.where(:field => true)

Anda ingin salah satunya, jadi gabungkan dengan $or :

Model.where(:$or => [
  { :field.exists => false },
  { :field        => true  }
])

Jika :field mungkin ada tetapi memiliki null nilai maka Anda bisa menggunakan { :field => nil } untuk mencocokkan dokumen di mana :field adalah null atau tidak ada sama sekali:

Model.where(:$or => [
  { :field => null  },
  { :field => true  }
])
# or
Model.where(:field.in => [ null, true ]) # This is probably the one you want

Ada juga { :field => { :$type => 10 } } jika Anda mencari hal-hal yang ada di sana dan secara eksplisit null . Sekarang mungkin saat yang tepat untuk tinjauan singkat tentang FAQ MongoDB:




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara mengatur driver MongoDB di XAMPP

  2. MongoDB $elemMatch $dalam

  3. MongoDB:Cara mengganti nama bidang menggunakan regex

  4. Struktur MongoDB untuk aplikasi pesan

  5. Bagaimana menerapkan pembaruan menggunakan operator posisi yang Difilter dengan arrayFilters