Saya ingin menanyakan sesuatu dengan like
permintaan SQL :
SELECT * FROM users WHERE name LIKE '%m%'
Bagaimana cara saya mencapai hal yang sama di MongoDB? Saya tidak dapat menemukan operator like
dalam dokumentasi .
sql
mongodb
mongodb-query
sql-like
Freewind
sumber
sumber
5
suara untuk tag seperti operator . Bisakah saya meminta agar Anda menyarankan seperti sql sebagai sinonim ?Jawaban:
Itu pasti:
atau, serupa:
Anda sedang mencari sesuatu yang mengandung "m" di suatu tempat (
%
operator SQL ' setara dengan Regexp'.*
'), bukan sesuatu yang memiliki "m" berlabuh ke awal string.catatan: mongodb menggunakan ekspresi reguler yang lebih kuat daripada "LIKE" dalam sql. Dengan ekspresi reguler, Anda dapat membuat pola apa pun yang Anda bayangkan.
Untuk info lebih lanjut tentang ekspresi reguler, lihat tautan ini https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
sumber
LIKE
permintaan dalam SQL.javascript db.users.find({ "name": { $regex: /m/i } })
keluar: paulo, patric
keluar: paulo, patric
keluar: pedro
sumber
select name from users;
hanya mencantumkan semua pengguna?Di
Anda dapat melakukan:
sumber
%sometext%
db.users.find({'name': {'$regex': 'sometext', '$options': 'i'}})
Di PHP, Anda dapat menggunakan kode berikut:
sumber
$collection.where(field => {"$regex" => value})
Anda akan menggunakan regex untuk itu di mongo.
misalnya:
db.users.find({"name": /^m/})
sumber
Sudah ada banyak jawaban. Saya memberikan berbagai jenis persyaratan dan solusi untuk pencarian string dengan regex.
Anda dapat melakukannya dengan regex yang berisi kata seperti like. Anda juga dapat menggunakan
$options => i
untuk pencarian case-sensitiveMengandung
string
Tidak Berisi
string
hanya dengan regexTidak sensitif case persis
string
Dimulai dari
string
Berakhir dengan
string
Simpan ini sebagai bookmark, dan referensi untuk perubahan lain yang mungkin Anda butuhkan.
sumber
Anda memiliki 2 pilihan:
atau
Yang kedua Anda memiliki lebih banyak opsi, seperti "i" dalam opsi untuk menemukan penggunaan case-insensitive. Dan tentang "string", Anda dapat menggunakan seperti ". String. " (% String%), atau "string. *" (String%) dan ". * String) (% string) misalnya. Anda dapat menggunakan ekspresi reguler seperti yang kamu inginkan.
Nikmati!
sumber
Jika menggunakan node.js , itu mengatakan bahwa Anda dapat menulis ini:
Juga , Anda dapat menulis ini:
sumber
collection.where(field => Regexp.new(value))
Sudah Anda mendapatkan jawaban tetapi untuk mencocokkan regex dengan ketidakpekaan huruf
Anda bisa menggunakan kueri berikut
The
i
dalam/m/i
menunjukkan kasus ketidakpekaan dan.pretty()
memberikan output lebih cantiksumber
var search="feacebook"
jadi bagaimana saya bisa mengatur di bawah @ The6thSens Ya, tapidb.users.find ({ "name" : /search/i } )
?Untuk luwak di Node.js
sumber
Anda dapat menggunakan fitur baru 2,6 mongodb:
sumber
Dalam proyek nodejs dan gunakan luong gunakan Seperti permintaan
sumber
searchQuery.product_name = '/'+req.query.search.value+'/i';
searchQuery.product_name= {$regex: req.query.search.value, $options: 'i'};
if(req.query.search.value){ searchQuery.product_name = {$regex: req.query.search.value, $options: 'i'}; searchQuery.sale_amount = {$regex: req.query.search.value, $options: 'i'}; searchQuery.sale_person = {$regex: req.query.search.value, $options: 'i'}; searchQuery.department_name = {$regex: req.query.search.value, $options: 'i'}; searchQuery.sale_date = {$regex: req.query.search.value, $options: 'i'}; }
dapatkah Anda melihat mengapa ini tidak berhasil?$regex: 'value'
menghasilkan ekspresi reguler untuk nilai pencarian dan Anda$options: 'i'
berarti kasus sensitif . Kode Anda tidak berfungsi karena Anda menggunakan nilai yang sama untuk properti yang berbeda dan itu bertindak sebagai dan kondisi yang tidak boleh dipenuhi dengan koleksi database Anda.Untuk PHP mongo Like.
Saya punya beberapa masalah dengan php seperti mongo. Saya menemukan bahwa menggabungkan params regex membantu dalam beberapa situasi PHP mongo menemukan bidang dimulai dengan . Saya pikir saya akan memposting di sini untuk berkontribusi pada utas yang lebih populer
misalnya
sumber
Menggunakan templat literal dengan variabel juga berfungsi:
{"firstname": {$regex : `^${req.body.firstname}.*` , $options: 'si' }}
sumber
Dengan Kompas MongoDB, Anda perlu menggunakan sintaks mode ketat, seperti:
(Dalam Kompas MongoDB, penting bahwa Anda menggunakan
"
bukan'
)sumber
Anda dapat menggunakan pernyataan di mana untuk membuat skrip JS:
Referensi: http://docs.mongodb.org/manual/reference/operator/where/
sumber
$where
sangat tidak efisien. Lakukan pemindaian koleksi penuh :(Dalam SQL, kueri ' seperti ' terlihat seperti ini:
Di konsol MongoDB, tampilannya seperti ini:
Selain itu
pretty()
metode akan di semua tempat di mana menghasilkan struktur JSON diformat yang lebih mudah dibaca.sumber
Regex adalah proses yang mahal.
Cara lain adalah dengan membuat indeks teks dan kemudian mencarinya menggunakan
$search
.Buat Indeks teks bidang yang ingin Anda cari:
Cari string dalam indeks teks:
sumber
In Go dan driver mgo:
di mana hasilnya adalah contoh struct dari tipe yang dicari
sumber
bson:RegEx{Pattern:"m", Options:"i"}
Gunakan persamaan reguler yang cocok seperti di bawah ini. Huruf 'i' menunjukkan ketidakpekaan huruf besar-kecil.
sumber
Seperti Query akan seperti yang ditunjukkan di bawah ini
untuk scala ReactiveMongo api,
sumber
Tampaknya ada alasan untuk menggunakan
/regex_pattern/
pola javascript maupun{'$regex': 'regex_pattern'}
pola mongo . Lihat: Pembatasan Syntax MongoBD RegExIni bukan tutorial RegEx yang lengkap, tetapi saya terinspirasi untuk menjalankan tes ini setelah melihat posting ambigu yang sangat terpilih di atas .
sumber
Jika Anda menggunakan Spring-Data Mongodb Anda bisa melakukan ini dengan cara ini:
sumber
Sebagai Mongo shell mendukung regex, itu sangat mungkin.
Jika kami ingin kueri tidak peka huruf besar-kecil, kami dapat menggunakan opsi "i", seperti yang ditunjukkan di bawah ini:
sumber
Jika Anda ingin pencarian 'Suka' di mongo maka Anda harus menggunakan $ regex dengan menggunakan query ini
db.product.find({name:{$regex:/m/i}})
untuk lebih lanjut Anda dapat membaca dokumentasi juga. https://docs.mongodb.com/manual/reference/operator/query/regex/
sumber
Gunakan pencarian substring agregasi (dengan indeks !!!):
sumber
{ "_id" : ObjectId("5aba5ad988385120a01b1ac2"), "fieldExists" : 4 }
String deepakparmar, dipak, parmar
ans deepakparmar
ans deepakparmar, dipak
ans deepakparmar, parmar
sumber
Saya menemukan alat gratis untuk menerjemahkan pertanyaan MYSQL ke MongoDB. http://www.querymongo.com/ Saya memeriksa beberapa pertanyaan. seperti yang saya lihat hampir semuanya benar. Menurut itu, jawabannya adalah
sumber
MongoRegex telah ditinggalkan.
Gunakan MongoDB \ BSON \ Regex
sumber
Saat kami mencari pola string, selalu lebih baik menggunakan pola di atas karena ketika kami tidak yakin dengan huruf besar-kecil. Semoga itu bisa membantu !!!
sumber