'$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" }