2013-07-24 2 views

답변

6

예, 컬렉션에 고유 한 기본 키를 정의 할 수 있습니다. MongoDB 드라이버는 자동으로 고유 한 _id 값을 생성합니다. 그러나이 _id 값을 무시할 수 있습니다.

예 : 012.Yourcollection.insert ({_ id : "myuniquevalueN", a : 1, b : 1})

고유성을 강화하는 보조 색인을 만들 수도 있습니다. 아래 참조 : http://docs.mongodb.org/manual/tutorial/create-a-unique-index/

질문의 이유를 이해할 수 있을지 잘 모르겠습니다. _id는 기본 키이며 콜렉션 내에서 문서의 고유성을 보장하고 고유 한 ID로 문서를 검색하는 수단을 제공합니다. 목적은 다른 데이터베이스의 기본 키와 다르지 않습니다. 사전 정의 된 이유는 무엇입니까? 부분적으로 MongoDB가 그 목적을 위해 하나를 지정하지 않으면 MongoDB가 자동으로 고유 한 객체 ID 값을 할당하기 때문입니다. 표준 _id 필드를 사용하면 구현이 간단 해집니다.

2

고유 한 ID가 필요합니다. mongodb 노드가 지리적으로 분산 될 수 있기 때문에 잠재적 인 충돌 가능성을 최소화하는 것이 목표입니다.

+0

_id 필드는 지리적 분포와 아무 관련이 없습니다. 목적은 다른 시스템의 기본 키와 다르지 않습니다. 지리적 분포는 네트워크 파티션과 같은 것을 다루는 HA를 제공하는 복제 세트에 의해 처리됩니다. 일부 사람들은 샤딩과 함께 위치 정보 태그를 사용하여 특정 위치/DC로 쿼리를 라우팅하지만 이는 _id 필드와 아무 관련이 없습니다. –

관련 문제