-
문자열 연산자데이터베이스/MongoDB 2023. 12. 28. 11:54
◎ $regex 연산자
- 값이 정규 표현식과 맞는 도큐먼트를 선택
- $regex 연산자는 옵션 값을 설정할 수 있어 다른 연산자와는 형식이 조금 다름
# 연산자의 형식 3가지 { <field>: {$regex: /pattern/, $options: '<options>'} } { <field>: {$regex: 'pattern', $options: '<options>'} } { <field>: {$regex: /pattern/<options>} }
옵션 설명 i 대소문자 무시 m 정규식에서 앵커(^)를 사용할 때 값에 \n이 있다면 무력화 x 정규식 안에 있는 공백을 모두 무시 s 점(.)을 사용할 때 \n을 포함해서 매치 <options> 자리에는 표의 네 가지 문자를 넣을 수 있음
◎ $text 연산자
$text 연산자는 해당 컬렉션의 텍스트 인덱스 안에서만 작동
db.stores.insertMany( [ { _id: 1, name: 'Java Hut', description: 'Coffee and cakes'}, { _id: 2, name: 'Burger Buns', description: 'Gourmet hamburgers'}, { _id: 3, name: 'Coffee shoping', description: 'Just coffee'}, { _id: 4, name: 'Clothes Clothes Clothes', description: 'Discount clothing'}, { _id: 5, name: 'Java Shopping', description: 'Indonesian goods'}, { _id: 6, name: '영희의 옷', description: '옷이 펄럭거리다'}, { _id: 7, name: '달리는 철수', description: '철수는 인도인'}, ] ) /* $text 연산자를 이용해 문자열을 검색하려면 먼저 문자열 인덱스를 생성해야 함 예시에서는 name, description 필드에 텍스트 인덱스 설정하는 명령어 사용 */ db.stores.createIndex( {name: 'text', description: 'text'})
# 사용 예시 db.stores.find({$text: {$search: 'coffee'}})
- 기본적으로 대소문자를 구분하지 않고 검색
db.stores.find({$text: {$search: 'bake coffee cake'}})
- 여러 단어를 띄어쓰기와 함께 사용하게 되면 해당 단어들 중 일부만 포함된 도큐먼트라도 불러오게 됨
db.stores.find({$text: {$search: "\"coffee shop\""}})
- 띄어쓰기를 한 상태의 문구를 검색하고 싶은 경우 큰따옴표 앞에 "\" 문자를 붙여 큰따옴표를 이스케이핑
- 작은따옴표는 적용되지 않으므로 반드시 큰따옴표 사용
db.stores.find({$text: {$search: "shopped"}})
- 언어별 대응 가능
- shop의 과거형을 검색해도 shop의 진행형인 shopping이 포함된 도큐먼트를 불러올 수 있음 (한글은 적용 x)
# text 연산자 문법 { $text: { $search: <string>, $language: <string>, $caseSensitive: <boolean>, $diacriticSensitive: <boolean> } }
필드 설명 $search 검색하려는 내용을 담음, 구절로 설정되지 않으면 띄어 쓴 단어를 포함한 모든 도큐먼트를 불러옴 $language 선택적, 검색하는 언어 설정, MongoDB가 지원하는 언어를 설정할 수 있음, 설정되지 않으면 인덱스에 설정된 내용을 따름 $caseSensitive 선택적, 불린 값을 가짐, 문자의 대소문자를 구분할지 결정 $diacriticSensitive 선택적, 불린 값을 가짐, 알파벳의 위아래에 붙이는 기호를 무시할지 결정, 기본 값은 false '데이터베이스 > MongoDB' 카테고리의 다른 글
쿼리 작성 실습 (0) 2023.12.28 배열 연산자 (0) 2023.12.28 배열 연습 문제 (0) 2023.12.15 MongoDB 문제 예제 2 (0) 2023.12.14 MongoDB 문제 예제 1 (0) 2023.12.14