Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cách truy vấn không phân biệt chữ hoa thường trong MongoDB

Sử dụng Regular Expression với flag i (case-insensitive) để truy vấn không phân biệt chữ hoa/thường.

Ví dụ minh họa

Tạo collection caseInsensitiveDemo với các biến thể "David":

> db.caseInsensitiveDemo.insertOne({"TenNguoiDung": "David"});
> db.caseInsensitiveDemo.insertOne({"TenNguoiDung": "DAVID"});
> db.caseInsensitiveDemo.insertOne({"TenNguoiDung": "david"});
> db.caseInsensitiveDemo.insertOne({"TenNguoiDung": "Carol"});
> db.caseInsensitiveDemo.insertOne({"TenNguoiDung": "Mike"});
> db.caseInsensitiveDemo.insertOne({"TenNguoiDung": "Sam"});
> db.caseInsensitiveDemo.insertOne({"TenNguoiDung": "daVID"});

Truy vấn case-insensitive

> db.caseInsensitiveDemo.find({TenNguoiDung: /^david$/i}).pretty();

Kết quả - trả về 4 document:

{ "TenNguoiDung": "David" }
{ "TenNguoiDung": "DAVID" }
{ "TenNguoiDung": "david" }
{ "TenNguoiDung": "daVID" }

Các cách viết regex khác

  • /david/i - Chứa "david" bất kỳ vị trí
  • /^david$/i - Khớp chính xác "david" (toàn trường)
  • {$regex: "david", $options: "i"} - Cú pháp object

Hiệu năng: Regex anchored (^...) có thể dùng index. Regex không anchored (/david/i) quét toàn bộ collection.