MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để thực hiện các truy vấn không phân biệt chữ hoa chữ thường trên Mongodb?

Giải pháp của Chris Fulstow sẽ hoạt động (+1), tuy nhiên, nó có thể không hiệu quả, đặc biệt nếu bộ sưu tập của bạn rất lớn. Biểu thức chính quy không có gốc (những biểu thức không bắt đầu bằng ^ , neo biểu thức chính quy vào đầu chuỗi) và những biểu thức sử dụng i cờ phân biệt chữ hoa chữ thường sẽ không sử dụng các chỉ mục, ngay cả khi chúng tồn tại.

Một tùy chọn thay thế mà bạn có thể xem xét là không chuẩn hóa dữ liệu của bạn để lưu trữ phiên bản viết thường của name trường, ví dụ như name_lower . Sau đó, bạn có thể truy vấn một cách hiệu quả (đặc biệt nếu nó được lập chỉ mục) cho các đối sánh chính xác không phân biệt chữ hoa chữ thường như:

db.collection.find({"name_lower": thename.toLowerCase()})

Hoặc với một đối sánh tiền tố (một biểu thức chính quy gốc) là:

db.collection.find( {"name_lower":
    { $regex: new RegExp("^" + thename.toLowerCase(), "i") } }
);

Cả hai truy vấn này sẽ sử dụng một chỉ mục trên name_lower .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Aggregations Sử dụng Java

  2. Xóa tài liệu nhúng trong một mảng tài liệu lồng nhau

  3. Chèn Khung dữ liệu gấu trúc vào mongodb bằng PyMongo

  4. Triển khai MongoDB an toàn trên Amazon AWS

  5. Làm cách nào để bạn đổi tên cơ sở dữ liệu MongoDB?