내 필드 중 하나를 기본 키로 설정하고 싶습니다 . 내가 사용하고 MongoDB를을 내 NoSQL에있다.
답변
_id
필드는 mongodb의 기본 키용으로 예약되어 있으며 고유 한 값이어야합니다. 아무것도 설정하지 않으면 _id
자동으로 “MongoDB Id Object”로 채워집니다. 그러나 해당 필드에 고유 한 정보를 입력 할 수 있습니다.
추가 정보 : http://www.mongodb.org/display/DOCS/BSON
도움이 되었기를 바랍니다.
답변
답변
mongodb에서 _id 필드는 기본 키용으로 예약되어 있습니다. Mongodb는 객체에 정의하지 않은 경우 내부 ObjectId 값을 사용하고 성능을 보장하기 위해 인덱스도 생성합니다.
그러나 _id에 고유 한 값을 입력 할 수 있으며 Mongodb는이를 대신 사용합니다. 여러 필드를 기본 키로 사용하려는 경우에도 객체를 사용할 수 있습니다.
{ _id : { a : 1, b: 1} }
키 순서 (예제에서 a와 b)가 중요한 이러한 ID를 만들 때주의해야합니다. 키를 바꾸면 다른 개체로 간주됩니다.
답변
RDBMS처럼 생각하면 기본 키를 만들 수 없습니다. 기본 기본 키는 _id입니다. 그러나 고유 인덱스를 만들 수 있습니다 . 예는 다음과 같습니다.
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, “name”: “nanhe”}
{ “_id”: ObjectId ( “577f9d02d71d71fa1fb6f43b”), “name”: “kumar”}
동일한 user_id를 삽입하려고하면 mongodb에서 쓰기 오류가 발생합니다.
db.members.insert({'user_id':1,'name':'aarush'})
WriteResult ({ “nInserted”: 0, “writeError”: { “code”: 11000, “errmsg”: “E11000 중복 키 오류 수집 : student.members 인덱스 : user_id_1 dup 키 : {: 1.0}”}})
답변
간단하게 사용할 수 있습니다.
db.collectionName.createIndex({urfield:1},{unique:true});
답변
이 동작을 달성하는 한 가지 방법은 _id
기본 키로 처리하려는 사용자 지정 필드를 기반으로 값을 (MongoDB의 기본 키용으로 예약 된) 필드로 설정하는 것입니다.
즉 employee_id
, MongoDB에서 문서를 만들 때 기본 키로 원하는 경우 ; _id
와 동일한 값을 할당 합니다 employee_id
.
답변
이것은 기본 키를 만드는 구문입니다.
db. <collection> .createIndex (<key and index type specification>, {unique : true})
데이터베이스에 student 라는 이름의 컬렉션이 있고 문서에는 기본 키를 만드는 데 필요한 student_id 라는 이름의 키가 있습니다. 그러면 명령은 다음과 같아야합니다.
db.student.createIndex({student_id:1},{unique:true})
학생 컬렉션에 중복 값을 추가 하여이 student_id 가 기본 키로 설정 되었는지 확인할 수 있습니다 .
자세한 정보는이 문서를 선호하십시오 https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index