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