개발 공부/mongo
[mongoDB] match $regex 다루기
solutionMan
2024. 7. 23. 16:48
반응형
MongoDB에서 정규 표현식(Regex)을 사용하는 방법을 예시와 함께 설명
MongoDB에서는 정규 표현식을 사용하여 문자열을 검색할 수 있다.
정규 표현식을 사용하려면 `$regex` 연산자를 사용합니다.
1. 기본 사용법
가장 기본적인 정규 표현식 사용법은 다음과 같습니다:
db.collection.find({ "field": { $regex: /pattern/ } })
* pattern이란 문자열이 들어있는 모든 document를 찾는다\
db.users.find({ "name": { $regex: /john/i } })
// 'john'이라는 문자열을 대소문자 구분 없이 검색합니다.
가. 옵션 사용
`i`: 대소문자 구분 없이 검색
`m`: 여러 줄 검색
db.users.find({ "email": { $regex: /@example.com$/i } })
* @example.com'으로 끝나는 이메일 주소를 대소문자 구분 없이 찾는다
3. 정규 표현식을 문자열로 사용
정규 표현식을 문자열로도 사용할 수 있습니다:
db.users.find({ "username": { $regex: "^[a-zA-Z0-9_]+$", $options: "i" } })
영문자, 숫자, 밑줄로만 이루어진 문자열을 대소문자 구분 없이 검색
4. 시작 또는 끝 패턴 검색
문자열의 시작 또는 끝에 특정 패턴이 있는지 검색할 수 있습니다:
db.products.find({ "description": { $regex: /^Sale/ } }) // 'Sale'로 시작하는 모든 설명을 검색합니다.
db.products.find({ "description": { $regex: /discount$/ } }) // 'discount'로 끝나는 모든 설명을 검색합니다.
5. 부분 문자열 검색
문자열 내에 특정 부분 문자열이 포함되어 있는지 검색
db.articles.find({ "content": { $regex: "MongoDB" } })
// 'MongoDB'가 포함된 모든 콘텐츠를 검색합니다.
6. 복잡한 패턴 검색
숫자가 포함된 문자열을 찾는 경우
db.inventory.find({ "item": { $regex: /\d+/ } }) // 숫자가 하나 이상 포함된 모든 항목을 검색합니다.
7. 필터와 정규 표현식 결합
다른 필터와 정규 표현식을 결합하여 더 복잡한 쿼리를 만들 수 있다.
db.orders.find({
"status": "shipped",
"tracking_number": { $regex: /^[A-Z]{2}\d{9}[A-Z]{2}$/ }
}) // 'shipped' 상태이고 특정 형식의 트래킹 번호를 가진 모든 주문을 검색합니다.
반응형