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

MongoDB $atau kueri

Gunakan $dalam

Untuk kueri dalam pertanyaan, lebih tepat menggunakan $in

db.Profiles.find ( { "name" : { $in: ["gary", "rob"] } } );

Mengapa tidak berhasil

Ada kutipan yang hilang - cli sedang menunggu Anda untuk menyelesaikan bagian kedua dari Anda atau:

db.Profiles.find ( { $or : [ { "name" : "gary" }, {"name":"rob} ] } )
..............................................................^

Anda harus menyelesaikan kueri dengan cukup agar cli dapat menguraikannya untuk kemudian mengatakan ada kesalahan sintaksis.

Pencocokan peka huruf besar/kecil

Seperti yang ditunjukkan oleh komentar, jika Anda ingin mencari dengan cara yang tidak peka huruf besar/kecil, maka Anda dapat menggunakan $or dengan $regex:

db.Profiles.find ( { $or : [ { "name" : /^gary/i }, {"name": /^rob/i } ] } )

Atau, Anda cukup menggunakan satu ekspresi reguler:

db.Profiles.find ( { "name" : /^(gary|rob)/i } )

Namun, kueri regex yang tidak dimulai dengan string tetap tidak dapat menggunakan indeks (tidak dapat menggunakan indeks dan secara efektif melakukan "mulai di sini hingga tidak ada kecocokan yang ditemukan lalu jaminan") dan oleh karena itu kurang optimal. Jika ini adalah kebutuhan Anda, sebaiknya simpan bidang nama yang dinormalisasi (mis. name_lc - nama huruf kecil) dan kueri tentang itu:

db.Profiles.find ( { "name_lc" : { $in: ["gary", "rob"] } } );



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kapan menggunakan GridFS di MongoDB?

  2. Bagaimana Menemukan Indeks yang Tidak Digunakan di MongoDB?

  3. Apakah klausa $in MongoDB menjamin pesanan?

  4. Cara menganalisis penggunaan disk dari wadah Docker

  5. Perbarui bidang MongoDB menggunakan nilai bidang lain