Computer >> Máy Tính >  >> Lập trình >> MongoDB

Tìm kiếm không phân biệt chữ hoa chữ thường trong Mongo?

Bạn có thể hạn chế tìm kiếm không phân biệt chữ hoa chữ thường trong MongoDB với sự trợ giúp của '$ regex'. Cú pháp như sau -

db.yourCollectionName.find({"yourFieldName" : { '$regex':'^yourValue$'}});

Bạn có thể sử dụng regex khác. Cú pháp như sau -

db.yourCollectionName.find({"Name" : { '$regex':/^yourValue$/i}});

Để hiểu khái niệm, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với một tài liệu như sau -

> db.caseInsesitiveDemo.insertOne({"Name":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8bd66293c80e3f23815e83")
}
> db.caseInsesitiveDemo.insertOne({"Name":"Johnson"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8bd66693c80e3f23815e84")
}
> db.caseInsesitiveDemo.insertOne({"Name":"Johny"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8bd66a93c80e3f23815e85")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find (). Truy vấn như sau -

> db.caseInsesitiveDemo.find().pretty();

Sau đây là kết quả -

{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" }
{ "_id" : ObjectId("5c8bd66693c80e3f23815e84"), "Name" : "Johnson" }
{ "_id" : ObjectId("5c8bd66a93c80e3f23815e85"), "Name" : "Johny" }

Nếu bạn sử dụng bên dưới loại regex thì các tài liệu danh sách sẽ hiển thị. Truy vấn như sau -

> db.caseInsesitiveDemo.find({"Name" : { '$regex' : 'John' }});

Sau đây là kết quả -

{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" }
{ "_id" : ObjectId("5c8bd66693c80e3f23815e84"), "Name" : "Johnson" }
{ "_id" : ObjectId("5c8bd66a93c80e3f23815e85"), "Name" : "Johny" }

Trường hợp 1 - Nếu bạn muốn hạn chế tất cả các tài liệu đó hiển thị, hãy sử dụng truy vấn đầu tiên -

> db.caseInsesitiveDemo.find({"Name" : { '$regex':'^John$'}});

Sau đây là kết quả -

{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" }

Nhìn vào kết quả mẫu ở trên, chỉ có ‘John’ đang hiển thị ..

Trường hợp 2 - Nếu bạn muốn hạn chế hiển thị tất cả các tài liệu đó, hãy sử dụng truy vấn thứ hai.

Truy vấn như sau -

> db.caseInsesitiveDemo.find({"Name" : { '$regex':/^John$/i}});

Sau đây là kết quả -

{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" }