Biểu thức chính quy là một cách quan trọng để chỉ định mẫu cho một tìm kiếm phức tạp. Toán tử MongoDB $regex cung cấp một cách như vậy để tìm kiếm một chuỗi sau khi khớp với một mẫu đã chỉ định
Trong MongoDB, khớp mẫu có thể được thực hiện bằng cách sử dụng các đối tượng biểu thức chính quy hoặc sử dụng toán tử $regex
Tên cơ sở dữ liệu của chúng tôi là 'myinfo' và tên bộ sưu tập của chúng tôi là 'sinh viên'. Đây, là bộ sưu tập dưới đây
Bộ sưu tập mẫu "sinh viên"
[
{
"f_name" : "Zenny",
"sex" : "Female",
"class" : "VI",
"age" : 12,
"grd_point" : 32.6342
},
{
"f_name" : "Paul",
"sex" : "Male",
"class" : "VII",
"age" : 13,
"grd_point" : 29.5904
},
{
"f_name" : "Tom",
"sex" : "Male",
"class" : "VI",
"age" : 11,
"grd_point" : 30.1257
},
{
"f_name" : "Lassy",
"sex" : "Female",
"class" : "VIII",
"age" : 13,
"grd_point" : 28.2514
},
{
"f_name" : "Peter",
"sex" : "Male",
"class" : "VI",
"age" : 11,
"grd_point" : 31.5201
}
]
Ví dụ về toán tử truy vấn đánh giá MongoDB - $regex
Nếu chúng tôi muốn chọn tất cả các tài liệu từ bộ sưu tập "sinh viên" thỏa mãn điều kiện -
Tên f_name phải bắt đầu bằng chữ "P"
lệnh mongodb sau đây có thể được sử dụng
>db.student.find[ { f_name: { $regex: 'P.*'} } ].pretty[];
N. B. Phương thức find[] hiển thị các tài liệu ở định dạng không có cấu trúc nhưng để hiển thị kết quả theo cách được định dạng, có thể sử dụng phương thức pretty[]
Lệnh tương đương SQL là
SELECT *
FROM student
WHERE f_name LIKE 'P%';
đầu ra
{ "_id" : ObjectId["527b3cc65ceafed9b2254a95"], "f_name" : "Paul", "sex" : "Male", "class" : "VII", "age" : 13, "grd_point" : 29.5904 } { "_id" : ObjectId["527b3cc65ceafed9b2254a98"], "f_name" : "Peter", "sex" : "Male", "class" : "VI", "age" : 11, "grd_point" : 31.5201 }
Nếu chúng ta viết câu lệnh mongodb ở trên như bên dưới thì sẽ không có đầu ra nào
>db.student.find[ { f_name: { $regex: 'p.*'} } ].pretty[];
Vì không có f_name nào bắt đầu bằng chữ 'p'. Trong trường hợp đó để tránh phân biệt chữ hoa chữ thường, chúng ta có thể viết câu lệnh trên theo cách sau. Đây là ví dụ -
>db.student.find[ { f_name: { $regex: 'p.*', $options: 'i' } } ].pretty[];
Tùy chọn "$option. i" được sử dụng để tránh phân biệt chữ hoa chữ thường
Câu lệnh trên có thể được viết mà không sử dụng $regex mà sử dụng các đối tượng biểu thức chính quy. Đây là các lệnh -
Có hai loại danh mục cơ sở dữ liệu - RDBM hoặc cơ sở dữ liệu quan hệ như Oracle, SQL Server, v.v. Cái còn lại là cơ sở dữ liệu NoQuery như MongoDB, CosmosDB, v.v. MongoDB đã trở nên phổ biến so với các cơ sở dữ liệu khác vì thiết kế đơn giản, kiểm soát đơn giản đối với dữ liệu được lưu trữ và cung cấp khả năng chia tỷ lệ theo cả chiều dọc và chiều ngang. Bài viết này giải thích MongoDB Regex và khớp mẫu có và không có toán tử $regex.
Được chứng nhận với IBM và UCI DCE
Chương trình đào tạo kỹ thuật dữ liệu UCI Đăng ký ngayMongoDB Regex là gì?
Biểu thức chính quy được sử dụng để khớp các mẫu. Không có gì khác ngoài việc tìm các chuỗi trong tài liệu. Đôi khi, không biết giá trị trường chính xác để tìm kiếm trong khi truy xuất tài liệu trong bộ sưu tập. Để hỗ trợ truy xuất dữ liệu dựa trên các giá trị tìm kiếm khớp mẫu, người ta có thể sử dụng các biểu thức chính quy.
MongoDB cung cấp dịch vụ tìm kiếm một mẫu trong chuỗi bằng biểu thức chính quy trong khi truy vấn. Nó sử dụng biểu thức chính quy tương thích với Perl [PCRE] phiên bản 8. 42 và hỗ trợ UTF-8. Người ta có thể thực hiện khớp mẫu trong MongoDB - với toán tử $regex và không có toán tử $regex.
So khớp mẫu bằng Toán tử $regex
Toán tử $regex cung cấp các khả năng biểu thức chính quy cho các chuỗi khớp mẫu trong các truy vấn. Nói một cách đơn giản hơn, sử dụng toán tử này, người ta có thể tìm kiếm chuỗi đã cho trong một tập hợp cụ thể. Nếu không biết giá trị trường chính xác mà người ta đang tìm kiếm trong tài liệu, toán tử này có thể hữu ích.
cú pháp
{ : { $regex: /pattern/, $options: '' } }
{ : { $regex: 'pattern', $options: '' } }
tùy chọn $
The following are available in MongoDB to use with regular expressions:
- s - Cho phép dấu chấm [. ] để khớp với tất cả các ký tự, kể cả ký tự xuống dòng.
- x - Để bỏ qua tất cả các ký tự khoảng trắng trong mẫu $regex.
- i - Được sử dụng để khớp cả mẫu chữ hoa và chữ thường trong chuỗi.
- m - Sử dụng ^ và $ để tìm kiếm cụ thể ^ và $ bên trong chuỗi. Nếu chúng không được sử dụng, các ký tự neo này sẽ khớp ở đầu hoặc cuối chuỗi
Thí dụ.
Hiển thị chi tiết của các thành viên có từ cấp cao trong trường vị trí của họ
db. thành viên. tìm [{vị trí. {$regex. "cao cấp"}}]. đẹp[]
Trong trường hợp này, hãy hiển thị tài liệu của thành viên có trường vị trí chứa chuỗi cấp cao. Để có được điều đó, hãy chuyển một biểu thức chính quy bằng toán tử $regex, i. e. {$regex. “senior”} cho trường vị trí trong phương thức find[].
>db. thành viên. tìm [{vị trí. [$regex. "cao cấp"}}]. đẹp[]
{
"_Tôi". ObjectId["6012d803fcb649933cd59833"],
"Tên". "Tony",
"tuổi". "32",
"Chức vụ". "Thành viên liên kết"
}
{
_Tôi". ObjectId["6012d803fcb649933cd59834"],
"Tên". "Lý Tiểu Long",
"tuổi". "25",
"Chức vụ". "Thành viên hàng đầu"
}
>
khóa học miễn phí. Giới thiệu về Khoa học dữ liệu
Tìm hiểu kiến thức cơ bản về khoa học dữ liệu Đăng ký ngayNhững điểm chính cần nhớ
- Người ta không thể sử dụng toán tử $regex bên trong toán tử $in.
- Nếu chỉ mục của trường đã chỉ định có sẵn cho biểu thức chính quy phân biệt chữ hoa chữ thường, thì MongoDB sẽ khớp chúng với các giá trị chỉ mục. Họ không sử dụng các chỉ mục một cách hiệu quả cho các truy vấn biểu thức chính quy phân biệt chữ hoa chữ thường.
- Việc sử dụng toán tử $regex để thêm một biểu thức chính quy bên trong danh sách điều kiện truy vấn được phân tách bằng dấu phẩy là bắt buộc.
- Sử dụng biểu thức toán tử $regex với $options để sử dụng các tùy chọn x và s.
- Với phiên bản mới nhất của MongoDB 4. 0. 7, người ta có thể sử dụng toán tử $not với biểu thức toán tử $regex.
- Sử dụng toán tử $regex nếu biểu thức chính quy tương thích với Perl không được hỗ trợ trong JavaScript.
So khớp mẫu mà không sử dụng toán tử $Regex
Có thể khớp các mẫu mà không cần sử dụng toán tử $regex trong MongoDB. Để làm như vậy, hãy sử dụng đối tượng biểu thức chính quy để chỉ định biểu thức chính quy. Ngoài ra, hãy sử dụng các biểu thức chính quy bên trong toán tử $in bằng cách sử dụng các đối tượng biểu thức chính quy.
cú pháp
{ : /pattern/ }
// có nghĩa là chỉ định tiêu chí tìm kiếm ở giữa các dấu phân cách.
Thí dụ
Hiển thị thông tin chi tiết của các thành viên có từ 'te' trong tên của họ bằng cách sử dụng các đối tượng biểu thức chính quy
db. thành viên. tìm [{Tên. /te/}]. đẹp[]
Tại đây, hiển thị tài liệu của các thành viên có tên chứa chuỗi ‘te’. Vì vậy, vượt qua một biểu thức chính quy, tôi. e. {Tên. /te/} cho trường tên trong phương thức find[]. // được sử dụng để chỉ định tiêu chí tìm kiếm giữa các dấu phân cách, i. e. ,/te/.
>db. Nhân viên. tìm [{Tên. /te/}]. đẹp[]
{
"_Tôi". ObjectId["6012d803fcb649933cd59836"],
"Tên". "Steve",
"tuổi". "32",
"Chức vụ". "Nhà phân tích dữ liệu"
}
{
"_Tôi". ObjectId["6012d803fcb649933cd59838"],
"Tên". "Peter",
"tuổi". "22",
"Chức vụ". "Kỹ sư phần mềm trẻ"
}
>
chủ đề liên quan
- Tạo Bộ sưu tập trong MongoDB
- Bộ sưu tập thả trong MongoDB
- Tài liệu cập nhật MongoDB
- Các kiểu dữ liệu trong MongoDB
- Bảng mã MongoDB
Chương trình Chứng chỉ Chuyên nghiệp về Khoa học Dữ liệu của Simplilearn hợp tác với Đại học Purdue và hợp tác với IBM, được xếp hạng số 1 Sau đại học về chương trình Khoa học Dữ liệu bởi ET. Nếu bạn muốn thành công về khoa học dữ liệu, chương trình này chính là chương trình dành cho bạn
Phần kết luận
Bạn có biết điều gì làm tăng giá trị cho bất kỳ doanh nghiệp nào không? . Các nhà khoa học dữ liệu có giá trị đối với công ty, từ việc giúp nhân viên cấp cao đưa ra quyết định tốt hơn cho đến tuyển dụng ứng viên. Các nhà khoa học dữ liệu đang thống trị các thị trường mới nổi. Với mức tăng trưởng khổng lồ 37%, khoa học dữ liệu đã trở thành một trong những ngành học đòi hỏi khắt khe nhất. Vì vậy, bạn có muốn kiếm cho mình một công việc lương cao bằng cách trở thành một nhà khoa học dữ liệu không? .
Thông tin về các Tác giả
Nikita Duggal là một nhà tiếp thị kỹ thuật số đầy nhiệt huyết với chuyên ngành ngôn ngữ và văn học Anh, một người sành sỏi về ngôn từ, thích viết về các công nghệ đang thịnh hành, tiếp thị kỹ thuật số và những câu hỏi hóc búa về nghề nghiệp