Saya ingin mencari pengguna di mongoDb dengan mencari pengguna yang disebut nilai. Masalah dengan:
username: 'peter'
adalah saya tidak menemukannya jika nama penggunanya adalah "Peter", atau "PeTER" .. atau semacamnya.
Jadi saya ingin melakukan seperti sql
SELECT * FROM users WHERE username LIKE 'peter'
Semoga kalian mendapatkan apa yang saya minta?
Singkat: 'field LIKE value' di mongoose.js / mongodb
Peter
atauPeTER
karenaLIKE
tidak peka huruf besar / kecil.Jawaban:
Bagi mereka yang sedang mencari solusi, ini dia:
sumber
".*"
nama pengguna.Saya mengalami masalah dengan ini baru-baru ini, saya menggunakan kode ini dan berfungsi dengan baik untuk saya.
Gunakan langsung
/Peter/i
bekerja, tetapi saya menggunakan'/'+data+'/i'
dan tidak bekerja untuk saya.sumber
sumber
sumber
new RegExp(var, "i")
sumber
Anda harus menggunakan regex untuk itu.
Berhati-hatilah, meskipun kueri ini tidak menggunakan indeks.
sumber
dokter luwak untuk menemukan. mongodb doc untuk regex.
Catatan argumen pertama kami lolos ke
mongoose.findOne
fungsi:{ "name" : { $regex: /Ghost/, $options: 'i' } }
,"name"
adalah bidang dokumen yang Anda cari,"Ghost"
adalah ekspresi reguler,"i"
adalah untuk kasus pertandingan sensitif. Semoga ini bisa membantu Anda.sumber
Kueri berikut akan menemukan dokumen dengan string case yang diperlukan secara tidak sensitif dan dengan kejadian global juga
sumber
Inilah yang saya gunakan.
sumber
Berikut kode saya dengan expressJS:
sumber
jika saya ingin menanyakan semua rekaman pada beberapa kondisi, saya dapat menggunakan ini:
sumber
$regex
saat Anda bisa saja menggunakannya{ $exists: true }
.Hanya melengkapi jawaban @PeterBechP.
Jangan lupa untuk menggambar karakter khusus. https://stackoverflow.com/a/6969486
sumber
Ini adalah solusi saya untuk mengubah setiap nilai dalam req.body menjadi parameter SUKA luwak :
sumber