데이터 정렬 은 스페인어나 독일어와 같은 특정 언어 의 규칙을 준수하는 문자열을 비교할 때 사용할 설정하다 의 규칙을 제공합니다. 데이터 정렬을 지정하지 않으면 서버 는 이진 비교를 기반으로 문자열을 정렬합니다. 그러나 많은 언어에 특정 순서 지정 규칙이 있으며, 사용자는 데이터 정렬을 통해 이러한 규칙을 준수하는 애플리케이션을 빌드 할 수 있습니다.
예를 예시 프랑스어에서는 특정 단어의 마지막 악센트에 따라 정렬 순서가 결정됩니다. 다음 예시 는 프랑스어 단어 4개의 올바른 정렬 순서를 보여줍니다.
cote < côte < coté < côté
프랑스어 데이터 정렬을 지정하면 사용자가 프랑스어 정렬 순서를 사용하여 string 필드를 정렬할 수 있습니다.
사용법
컬렉션, 인덱스 또는 CRUD 명령에 대한 데이터 정렬을 지정할 수 있습니다.
데이터 정렬 매개변수:
~pymongo.collation.Collation 모델 또는 Python 사전을 사용하여 데이터 정렬을 지정할 수 있습니다. 두 경우 모두 구조는 동일합니다.
Collation(locale=<string>, caseLevel=<bool>, caseFirst=<string>, strength=<int>, numericOrdering=<bool>, alternate=<string>, maxVariable=<string>, backwards=<bool>)
유일한 필수 매개 변수는 서버 가 ICU 형식의 국가 및 국가 및 언어 설정 설정 ID 로 구문 분석하는 locale 입니다. 예를 예시 locale 를 en_US 로 설정하다 하여 미국 영어를 나타내거나 fr_CA 를 캐나다 프랑스어를 나타내도록 설정합니다.
collection에 기본 데이터 정렬 할당
다음 예시 에서는 contacts 이라는 새 컬렉션 을 만들고 fr_CA 국가 및 국가 및 언어 설정 설정을 사용하여 기본값 데이터 정렬을 할당하는 방법을 보여 줍니다. 이 작업은 다른 데이터 정렬이 명시적으로 지정되지 않는 한 contacts 컬렉션 에 대해 실행 되는 모든 쿼리가 fr_CA 데이터 정렬을 사용하도록 합니다.
from pymongo import MongoClient from pymongo.collation import Collation db = MongoClient().test collection = db.create_collection('contacts', collation=Collation(locale='fr_CA'))
인덱스에 기본 데이터 정렬 할당
새 인덱스를 만들 때 기본 데이터 정렬을 지정할 수 있습니다.
다음 예시 에서는 unique 매개 변수를 활성화하고 locale 을(를) fr_CA 으)로 설정하다 한 기본값 데이터 정렬을 사용하여 contacts 컬렉션 의 name 필드 에 인덱스 를 만드는 방법을 보여 줍니다.
from pymongo import MongoClient from pymongo.collation import Collation contacts = MongoClient().test.contacts contacts.create_index('name', unique=True, collation=Collation(locale='fr_CA'))
쿼리에 대한 데이터 정렬 지정
쿼리 는 결과를 정렬할 때 사용할 데이터 정렬을 지정할 수 있습니다. 다음 예시 에서는 test 데이터베이스 의 contacts 컬렉션 에서 실행되는 쿼리 를 보여 줍니다. city 필드 에 New York 가 포함된 문서를 일치시키고 fr_CA 데이터 정렬을 사용하여 name 필드 를 정렬합니다.
from pymongo import MongoClient from pymongo.collation import Collation collection = MongoClient().test.contacts docs = collection.find({'city': 'New York'}).sort('name').collation( Collation(locale='fr_CA'))
기타 쿼리 유형
데이터 정렬을 사용하여 여러 유형의 쿼리에 대한 문서 일치 규칙을 제어할 수 있습니다. 업데이트 또는 삭제 작업을 수행하는 모든 메서드는 데이터 정렬을 지원 하며, locale 매개변수에 사용할 수 있는 언어 및 변형을 준수하기 위해 데이터 정렬을 사용하는 쿼리 필터를 만들 수 있습니다.
다음 예시 에서는 strength 가 ~pymongo.collation.CollationStrength.SECONDARY로 설정하다 데이터 정렬을 사용하며, string 비교에서 기본 문자와 문자 악센트만 고려하고 대소문자 구분은 고려하지 않습니다( 예시: ). first_name 필드 에서 jürgen (대소문자 구분 없음)이 있는 contacts 컬렉션 의 모든 문서가 업데이트됩니다.
from pymongo import MongoClient from pymongo.collation import Collation, CollationStrength contacts = MongoClient().test.contacts result = contacts.update_many( {'first_name': 'jürgen'}, {'$set': {'verified': 1}}, collation=Collation(locale='de', strength=CollationStrength.SECONDARY))