고유한 필드 를 샤드 키 사용할 수 없거나 여러 필드에 대해 고유성을 시행하다 해야 하는 경우 '프록시 컬렉션 ' 역할을 하는 다른 컬렉션 을 만들어야 합니다. 이 컬렉션 에는 원본 문서 에 대한 참조(예: ObjectId)와 고유 키가 모두 포함되어야 합니다.
사용자 정보를 저장하는 records 컬렉션을 생각해 보겠습니다. email 필드는 샤드 키가 아니지만 고유성을 보유해야 합니다.
그러면 proxy 컬렉션에 다음이 포함됩니다.
{   "_id" : ObjectId("...")   "parent_id" : "<ID>"   "email" : "<string>" } 
다음 명령어를 사용하여 email 필드에 고유 인덱스을 생성합니다.
db.proxy.createIndex( { "email" : 1 }, { unique : true } ) 
다음 예시에서는 먼저 대상 필드와 생성된 고유 ID가 포함된 문서를 proxy 컬렉션에 삽입하고자 합니다. 작업이 성공하면 전체 문서를 records 컬렉션에 삽입합니다.
records = db.getSiblingDB('records'); proxy = db.getSiblingDB('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... }) 
이 방법을 사용하려면 MongoDB가 문서 삽입 시 자동으로 ID를 생성하는 대신 primary_id 필드의 고유 ID를 만들어야 합니다.
여러 필드에 고유성을 적용하려면 각 필드마다 프록시 컬렉션이 필요합니다.
고려 사항
- 애플리케이션은 '프록시' 컬렉션에 문서를 삽입할 때 오류를 파악하고 두 컬렉션의 일관성을 적용해야 합니다. 
- 프록시 컬렉션에 샤딩이 필요한 경우 고유성을 적용할 단일 필드를 샤딩해야 합니다. 
- 샤딩된 프록시 컬렉션을 이용하여 하나 이상의 필드에 고유성을 적용하려면 고유성을 적용할 모든 필드에 대한 하나의 프록시 컬렉션을 보유해 합니다. 단일 프록시 컬렉션에 여러 개의 고유 인덱스를 만들면 이를 샤딩할 수 없습니다.