웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > db

MongoDB에서 대소문자 구분하지 않고 정규표현식 찾는 방법

Last Modified : 2020-09-17 / Created : 2017-08-10
9,159
View Count
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에 정규식을 적용하는 경우 대소문자를 구분하는 방법을 알아보았습니다.

Previous

MongoDB auto-increment 1 더하는 방법

Previous

리눅스에 Redis 데이터베이스 설치하기, install