AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

샤드 키가 아닌 필드에 고유성 적용

고유한 필드 샤드 키 사용할 수 없거나 여러 필드에 대해 고유성을 시행하다 해야 하는 경우 프록시 컬렉션 역할을 할 다른 컬렉션 만듭니다.

샤딩된 클러스터 고유 인덱스 샤드 키 에 있거나 샤드 키 접두사로 포함하는 경우에만 샤드 간에 고유 제약 조건을 적용합니다. 프록시 컬렉션 컬렉션 원본 문서 에 대한 참조와 고유 키를 모두 포함하며 애플리케이션 프록시 컬렉션 에 먼저 기록합니다.

프록시 컬렉션 사용할 때는 다음 사항을 고려하세요.

  • 애플리케이션 은 프록시 컬렉션 에 문서를 삽입할 때 오류를 포착해야 하며 두 컬렉션 간에 일관성 시행하다 해야 합니다.

  • 프록시 컬렉션에 샤딩이 필요한 경우 고유성을 적용할 단일 필드를 샤딩해야 합니다.

  • 각 필드 자체 프록시 컬렉션 필요합니다. 샤딩된 프록시 컬렉션을 사용하여 둘 이상의 필드 에 고유성을 시행하다 하려면 모든 필드 에 대해 하나의 프록시 컬렉션 있어야 합니다. 단일 프록시 컬렉션 에 여러 개의 고유 인덱스를 만드는 경우 프록시 컬렉션 샤드 할 수 없습니다.

  • 이 접근 방식을 사용하려면 문서 삽입 시 MongoDB 자동으로 생성하도록 하는 대신 primary_id 필드 에 대한 고유 ID 생성해야 합니다.

샤딩된 컬렉션의 고유 인덱스에 적용 전체 제약 조건 설정하다 는 샤드 클러스터의 고유성 유지를 참조하세요.

  • 고유한 제약 조건이 필요하지만 샤드 키 의 일부가 될 수 없는 필드 를 식별합니다.

  • 필드 의 고유성 제약 조건을 위반하는 기존 문서가 없는지 확인합니다.

  • mongosh를 mongos 인스턴스 에 연결합니다.

사용자 정보를 저장하는 records 컬렉션 생각해 보겠습니다. email 필드 샤드 키 아니지만 고유해야 합니다. proxy 컬렉션 다음 필드가 포함되어 있습니다.

{
"_id" : ObjectId("..."),
"parent_id" : "<ID>",
"email" : "<string>"
}
1

proxy 컬렉션 의 email 필드 에 고유 인덱스 생성합니다.

db.proxy.createIndex( { "email" : 1 }, { unique : true } )
email_1
2

대상 필드 와 생성된 고유 ID 포함된 문서 proxy 컬렉션 에 삽입합니다. 작업이 성공적인 하면 전체 문서 records 컬렉션 에 삽입합니다.

records = db.getCollection('records');
proxy = db.getCollection('proxy');
var primary_id = ObjectId();
proxy.insertOne({
"_id" : primary_id,
"email" : "example@example.net"
})
// if: the above operation returns successfully,
// then continue:
records.insertOne({
"_id" : primary_id,
"email": "example@example.net",
// additional information...
})