2010-07-21 4 views

답변

66

_id 필드는 mongodb의 기본 키로 예약되어 있으며 고유 한 값이어야합니다. _id으로 설정하지 않으면 자동으로 "MongoDB Id Object"로 채울 것입니다. 그러나 해당 필드에 고유 정보를 넣을 수 있습니다.

추가 정보 :이 도움이 http://www.mongodb.org/display/DOCS/BSON

희망.

+32

이 문서를 선호 : 나는 사용자 컬렉션 키로 USER_EMAIL를 원하지만 그것을 설정하는 방법 필드를 키 및 고유로 사용 –

1

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/

당신은이 링크를 자동 증가 _id 필드를 확인할 수 있습니다.

+13

[링크 전용 답변] (http://meta.stackoverflow.com/tags/link-only-answers/info)은 권장하지 않으므로 SO 답변은 검색의 끝점이어야합니다. 해결책 (시간이 지남에 따라 부실 해지는 경향이있는 참조의 또 다른 중간 기착 대). 링크를 참조 용으로 유지하면서 독립형 시놉시스를 여기에 추가하는 것을 고려해보십시오. – kleopatra

+1

링크가 끊어 졌으므로이 대답은 쓸모가 없습니다 – PeterM

1

이 동작을 달성하는 한 가지 방법은 _id (MongoDB에서 기본 키로 예약 됨) 필드를 기본 키로 취급하려는 사용자 정의 필드를 기반으로 설정하는 것입니다.
즉, employee_id을 기본 키로 사용하려는 경우 MongoDB에서 문서를 만들 때. employee_id의 값과 동일한 _id 값을 지정하십시오.

14

다른 방법으로 컬렉션에 Indexes을 생성하고 고유한지 확인하십시오.

당신은 내가 실제로 매우 간단하고 쉽게 구현할 찾아 다음 link

에 대한보다 자세한 내용을보실 수 있습니다.

+2

"인덱스의 고유 한 제약 조건으로 인해 컬렉션의 필드에 하나의 문서 만 사용할 수 있습니다. 공유 된 컬렉션의 경우 이러한 고유 인덱스는 삽입 및 인덱싱 작업이 로컬이므로 고유성을 적용 할 수 없습니다 각 샤드에 "--https : //docs.mongodb.org/manual/tutorial/enforce-unique-keys-for-sharded-collections/ – JohnC

8

mongodb _id 필드는 기본 키를 위해 예약되어 있습니다. Mongodb는 내부 ObjectId 값을 객체에 정의하지 않고 성능을 보장 할 색인을 생성하는 경우 내부 ObjectId 값을 사용합니다.

그러나 _id에 대한 고유 한 값을 넣을 수 있으며 Mongodb에서 대신 사용할 수 있습니다. 그리고 당신은 기본 키 등의 여러 필드를 사용하려는 경우에도 당신은 개체를 사용할 수 있습니다 :이 ID를 만들 때

{ _id : { a : 1, b: 1} } 

그냥주의를 당신이 교환하는 경우 (예에서 a와 b) 키 문제의 순서 그들 주위에, 그것은 다른 대상으로 간주됩니다.

3

RDBMS처럼 기본 키를 만들 수 없으면 기본 기본 키는 _id입니다. 그러나 Unique Index을 만들 수 있습니다. 보기는 우둔합니다.

db.members.createIndex({ "user_id": 1 }, { unique: true }) 

db.members.insert({'user_id':1,'name':'nanhe'}) 

db.members.insert({'name':'kumar'}) 

db.members.find(); 

출력이 낮습니다.

{ "_id"ObjectId가 ("577f9cecd71d71fa1fb6f43a"), "USER_ID"1 "이름": "nanhe"}

{ "_id"ObjectId가 ("577f9d02d71d71fa1fb6f43b"), "이름" "kumar"}

동일한 user_id를 삽입하려고하면 mongodb가 trow 쓰기 오류가 발생합니다.

db.members.insert({'user_id':1,'name':'aarush'}) 

WriteResult ({ "nInserted": 0, "writeError": { "코드"11000, "에 errmsg": "E11000 키 오류 수집을 중복 : student.members 지수 : user_id_1 DUP 키를 : 간단한

4

당신이 db.collectionName.createIndex({urfield:1},{unique:true});

2

을 사용할 수 있습니다 : {1.0} " } 은})이 기본 키

을 만드는 구문입니다

db. < 모음> .createIndex (< 키와 인덱스 형 사양>, { 독특한 : TRUE})

이의 우리의 데이터베이스를 수집 학생라는 것을 보자과의 문서가 키라는 이름의 한 우리가 필요로하는을 student_id 기본 키를 만들 수 있습니다. 다음 명령은 아래와 같아야합니다.

db.student.createIndex({student_id:1},{unique:true}) 

당신이 학생 컬렉션에 중복 값을 추가하는 시도하여 기본 키로 세트를 student_id 여부를 확인할 수 있습니다.

실제로`방법, 차 key`로 내 필드 중 하나를 설정 예하는 대답하지 않습니다이 추가 정보 https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index

관련 문제