개발 공부/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' 상태이고 특정 형식의 트래킹 번호를 가진 모든 주문을 검색합니다.




반응형