Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

Mongo에서 대소문자를 구분하지 않는 검색?

<시간/>

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