Lọc trên các trường chuỗi trong Mongodb phân biệt chữ hoa chữ thường mà không cần sử dụng biểu thức chính quy. Chính xác thì tại sao bạn không thể sử dụng biểu thức chính quy?
Truy vấn của bạn có thể được chỉnh sửa như sau:
var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Regex(u => u.Email, new BsonRegularExpression("/^" + email + "$/i"),
Builders<ME_User>.Filter.Eq(u => u.Password, password));
Lưu ý các dấu "^" và "$" để chỉ định một tìm kiếm từ hoàn chỉnh và quan trọng nhất là toán tử không phân biệt chữ hoa chữ thường ở cuối biểu thức chính quy ("/ i").
Một cách khác có thể là Tìm kiếm văn bản, yêu cầu tạo chỉ mục văn bản và không phân biệt chữ hoa chữ thường đối với bảng chữ cái latin: http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation
Trong C #, bạn sẽ sử dụng với Bộ lọc Văn bản:
var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Text(email),
Builders<ME_User>.Filter.Eq(u => u.Password, password));
Với truy vấn chỉ mục văn bản trong mệnh đề OR, bạn cũng cần tạo chỉ mục trên trường Mật khẩu, nếu không truy vấn OR sẽ tạo ra lỗi: