MongoDB에서 정규표현식을 사용하여 데이터를 찾을때 대소문자 구분없이(case-insensitive) 찾는 방법을 알아봅니다.




# MongoDB 정규표현식으로 검색시 대소문자 무시하는 방법먼저 일반적 방법으로 find()를 사용하여 검색시 정규표현식을 적용한다면 아래와 같이 쿼리문을 사용할 수 있습니다. 아래 예제는 컬렉션에서 sitename 컬럼에 정규식을 사용... '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'

code snippet widget
여기까지 MongoDB에 정규식을 적용하는 경우 대소문자를 구분하는 방법을 알아보았습니다.