개요
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 옵션을 추가하면 됩니다.