Nếu chúng ta muốn toán tử SQL like “Like” trong Mongodb để khớp chuỗi. Nhưng trong mongo DB không có toán tử “like” như vậy thay vào đó nó có biểu thức chính quy để đạt được một tính năng tương tự
db.users.insert[{name: 'singh'}] db.users.insert[{name: 'singhak'}] db.users.insert[{name: 'aksingh'}]
Mục lục
Trường hợp 1
Trong MongoDB, bạn cũng có thể sử dụng các đối tượng biểu thức chính quy [i. e.
Syntax: { : /pattern/ }
1] để chỉ định biểu thức chính quySyntax: { : /pattern/ }
ví dụ 1
--SQL SELECT * FROM users WHERE name LIKE '%sin%' --MongoDB db.users.find[{name: /sin/}]
ví dụ 2
--SQL SELECT * FROM users WHERE name LIKE '%gh' --MongoDB db.users.find[{name: /gh$/}]
ví dụ 3
--SQL SELECT * FROM users WHERE name LIKE 'ak%' --MongoDB db.users.find[{name: /^ak/}]
Nếu chúng ta muốn bỏ qua, chúng ta có thể sử dụng như thế này
db.users.find[{name: /Sin/i}]
cũng đọc. Bắt đầu mongo DB dưới dạng Dịch vụ
Trường hợp 2
chúng ta có thể sử dụng toán tử
Syntax: { : /pattern/ }
2, nó cung cấp khả năng biểu thức chính quy để so khớp mẫu chuỗi trong truy vấn. MongoDB sử dụng các biểu thức chính quy tương thích với Perl [i. e. “PCRE” ] phiên bản 8. 42 với hỗ trợ UTF-8 Hôm nay trong bài viết này, chúng ta sẽ xem cách viết một truy vấn MongoDB Like bằng ví dụ [giống như truy vấn SQL 'like']. Chúng ta sẽ thấy một vài tình huống với các ví dụ và mẫu truy vấn
Hôm nay trong bài viết này, chúng tôi sẽ đề cập đến các khía cạnh dưới đây,
Chúng ta sẽ xem cách chúng ta có thể sử dụng các truy vấn đơn giản đến phức tạp hoặc các mẫu biểu thức chính quy để khớp các tổ hợp ký tự trong chuỗi
Bắt đầu
Tôi có một tài liệu MongoDB mẫu như bên dưới trong một trong các bộ sưu tập. Ở đây chúng ta sẽ cố gắng tìm kiếm tất cả các tài liệu bằng cách sử dụng tương tự như “Like“
________số 8_______
Bây giờ chúng ta sẽ thử một vài bộ like trong truy vấn MongoDB
Tình huống 1 – Truy vấn MongoDB với tiêu chí 'Thích' ở nơi khác trong trường
Hãy xây dựng một truy vấn để lấy tên Tác giả trong đó tên chứa một từ như “J” cho trường Tác giả
giả định
“J” có thể được chứa ở đầu hoặc cuối hoặc ở giữa hoặc bất kỳ nơi nào khác của tên Tác giả
mẫu truy vấn
{ : /.your string ./ }
Trong đó 'J' là tiêu chí tìm kiếm của bạn
Truy vấn mẫu
{ Author: /.J./ }
Kết quả Mongo Shell,
> db.Books.find[{Author:/*.J.*/}]
{ "_id" : ObjectId["5db5a4476997188b2722c820"], "Name" : "Design Patterns", "Price" : 54.93, "Category" : "Computers", "Author" : "Ralph Johnson" }
{ "_id" : ObjectId["5f34a2430c3ca98a8c9052d2"], "Name" : "Design Patterns", "Price" : 56.00, "Category" : "Computers", "Author" : "Mike Johnson" }
Tình huống 2 – Truy vấn MongoDB với 'Like' bắt đầu với một số tiêu chí
hãy xây dựng một truy vấn để Lấy danh sách các mục bắt đầu với một số tiêu chí tìm kiếm. Ví dụ “Ro” cho trường Tác giả
mẫu truy vấn
{ Field Name : /^Ro/ }
Trong đó 'Ro' là tiêu chí tìm kiếm của bạn
Ghi chú. Truy vấn trên có truy vấn phân biệt chữ hoa chữ thường
Truy vấn mẫu
db.Books.find[ { Author:/^Ro/ } ]
Kết quả Mongo Shell,
> db.Books.find[{Author:/^Ro/}]
{ "_id" : ObjectId["5db5a4476997188b2722c821"], "Name" : "Clean Code", "Price" : 43.15, "Category" : "Computers", "Author" : "Robert C. Martin" }
Truy vấn trên, chúng ta có Tác giả “Robert C. Martin” phù hợp với tiêu chí tìm kiếm
Tình huống 3 – Lấy danh sách các mục kết thúc bằng một số tiêu chí
hãy xây dựng một truy vấn để Lấy danh sách các mục kết thúc bằng một số tiêu chí tìm kiếm. Ví dụ “rt” cho trường Tác giả
mẫu truy vấn
{ Field Name : /rt$/ }
Ghi chú. ví dụ hiển thị truy vấn phân biệt chữ hoa chữ thường
Truy vấn mẫu
db.Books.find[ { Author:/rt$/ } ]
Kết quả Mongo Shell,
> db.Books.find[{Author:/rt$/}] { "_id" : ObjectId["5ff503cda29ce9564c2724e3"], "Name" : "Code Refactoring", "Price" : 43.15, "Category" : "Computers", "Author" : "Julia Robert"}
Truy vấn trên, chúng tôi có Tác giả “Julia Robert” phù hợp với tiêu chí tìm kiếm
Thích truy vấn bằng Regex?
Tôi sẽ trình bày thêm một số truy vấn sử dụng regex trong bài viết tiếp theo,
Truy vấn kiểu Mongodb không phân biệt chữ hoa chữ thường
Vui lòng xem bài viết dưới đây để biết thêm ví dụ về MongoDB như truy vấn phân biệt chữ hoa chữ thường và truy vấn nhạy cảm