Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 SQL의 LIKE 연산과 유사한 쿼리 수행하는 방법

개요

SQL에서 자주 사용하는 LIKE 연산과 유사한 기능을 MongoDB에서 구현하려면 정규 표현식(Regular Expression)을 활용하면 됩니다. 예를 들어 특정 문자열이 포함된 문서를 검색하려면 /검색문자/ 형태로 패턴을 지정하면 됩니다.

먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.

컬렉션 생성 및 문서 삽입

> db.demo26.insertOne({"StudentName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e14c9dc22d07d3b95082e79")
}
> db.demo26.insertOne({"StudentName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e14c9e022d07d3b95082e7a")
}
> db.demo26.insertOne({"StudentName":"Jones"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e14ca7222d07d3b95082e7b")
}
> db.demo26.insertOne({"StudentName":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e14ca7622d07d3b95082e7c")
}

find() 메서드로 전체 문서 조회하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.

> db.demo26.find();

위 명령을 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e14c9dc22d07d3b95082e79"), "StudentName" : "Chris" }
{ "_id" : ObjectId("5e14c9e022d07d3b95082e7a"), "StudentName" : "John" }
{ "_id" : ObjectId("5e14ca7222d07d3b95082e7b"), "StudentName" : "Jones" }
{ "_id" : ObjectId("5e14ca7622d07d3b95082e7c"), "StudentName" : "David" }

MongoDB에서 LIKE와 유사한 쿼리 실행하기

다음은 MongoDB에서 SQL의 “LIKE” 문과 동일한 역할을 하는 쿼리입니다. 필드 값에 정규 표현식 /Jo/를 지정하여 이름에 “Jo”가 포함된 학생만 검색합니다.

> db.demo26.find({"StudentName":/Jo/});

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e14c9e022d07d3b95082e7a"), "StudentName" : "John" }
{ "_id" : ObjectId("5e14ca7222d07d3b95082e7b"), "StudentName" : "Jones" }

정규 표현식 활용 팁

기본적으로 /Jo/는 문자열 내 어디든 “Jo”가 포함되어 있으면 매칭됩니다. 만약 문자열이 반드시 “Jo”로 시작하는 경우만 찾고 싶다면 /^Jo/, 끝나는 경우만 찾고 싶다면 /Jo$/처럼 앵커(^, $)를 함께 사용하면 됩니다. 또한 대소문자를 구분하지 않고 검색하려면 /jo/i와 같이 i 옵션을 추가하면 됩니다.