MongoDB에서 정규표현식을 사용하여 데이터를 찾을때
대소문자 구분없이(case-insensitive, ignore case) 찾는 방법을 알아봅니다.
# MongoDB 정규표현식으로 검색시 대소문자 무시하는 방법
먼저 일반적 방법으로 find()를 사용하여 검색시 정규표현식을 적용한다면 아래와 같이 쿼리문을 사용할 수 있습니다. 참고로 아래 예제는 pymongo의 예제로 따옴표가 추가되었을 수 있습니다.
만약 컬렉션에서 sitename 컬럼에
정규표현식을 사용하여 $regex의 값으로 'web'을 사용하여 찾으려고 합니다.
db.myCollection.find({'sitename': {'$regex': 'web' }})
위 쿼리문은 web의 대소문자 구분을 하지 않습니다. 만약 web, WEB 처럼 대소문자 구분없이 모든 값을 찾으려면? 이 경우
$option 값을 추가해야합니다. 아래는 수정된 쿼리문입니다.
@ 수정 후 MongoDB 쿼리
db.myCollection.find({'sitename': {'$regex': 'web', '$options': 'i' }})
달라진 점이라면
$option의 프로퍼티를 사용하여 값으로 'i'를 추가한 부분입니다. 여기서 코드에 사용된 i값은 대소문자 구분없이 검색결과를 찾도록 합니다. 즉 아래와 같이 일치하는 값들을 모두 가져오게 될 것 입니다.
'web'
'Web'
'wEb'
'WeB'
'weB'
'wEB'
'WEb'
'WEB'
즉 정규표현식 패턴
/web/i과 동일하게 구현하게 됩니다.
code snippet widget
여기까지 MongoDB에 정규식을 적용하는 경우 대소문자를 구분하는 방법을 알아보았습니다.