'$regex'를 사용하여 MongoDB에서 대소문자를 구분하지 않는 검색을 제한할 수 있습니다. 구문은 다음과 같습니다 -
db.yourCollectionName.find({"yourFieldName" : { '$regex':'^yourValue$'}}); 다른 정규식을 사용할 수 있습니다. 구문은 다음과 같습니다 -
db.yourCollectionName.find({"Name" : { '$regex':/^yourValue$/i}}); 개념을 이해하기 위해 문서로 컬렉션을 만들어 보겠습니다. 문서로 컬렉션을 생성하는 쿼리는 다음과 같습니다 -
> 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")
} find() 메서드를 사용하여 컬렉션의 모든 문서를 표시합니다. 쿼리는 다음과 같습니다 -
> db.caseInsesitiveDemo.find().pretty();
다음은 출력입니다 -
{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" }
{ "_id" : ObjectId("5c8bd66693c80e3f23815e84"), "Name" : "Johnson" }
{ "_id" : ObjectId("5c8bd66a93c80e3f23815e85"), "Name" : "Johny" } 아래에 정규식 유형을 사용하면 목록 문서가 표시됩니다. 쿼리는 다음과 같습니다 -
> db.caseInsesitiveDemo.find({"Name" : { '$regex' : 'John' }}); 다음은 출력입니다 -
{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" }
{ "_id" : ObjectId("5c8bd66693c80e3f23815e84"), "Name" : "Johnson" }
{ "_id" : ObjectId("5c8bd66a93c80e3f23815e85"), "Name" : "Johny" } 사례 1 − 모든 문서가 표시되지 않도록 제한하려면 첫 번째 쿼리를 사용하십시오. −
> db.caseInsesitiveDemo.find({"Name" : { '$regex':'^John$'}}); 다음은 출력입니다 -
{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" } 위의 샘플 출력을 보면 'John'만 표시됩니다.
사례 2 − 모든 문서가 표시되지 않도록 제한하려면 두 번째 쿼리를 사용하세요.
쿼리는 다음과 같습니다 -
> db.caseInsesitiveDemo.find({"Name" : { '$regex':/^John$/i}}); 다음은 출력입니다 -
{ "_id" : ObjectId("5c8bd66293c80e3f23815e83"), "Name" : "John" }