반응형
상황은 이와 같다. 몽고디비를 몽구스로 사용하는데 최초등록한 key값을 나중에 지워야하는 경우가 발생하였다.
하지만 스키마에서 unique값만 바꾼다고해서 기존의 collection에 들어가 있던 키 설정이 지워지지 않기때문에 db로 들어가서 key를 삭제해줘야한다.
이 같은 상황에서는 주로 아래의 에러가 뜬다.
MongoError: E11000 duplicate key error index car.wheel.$index_1 dup key: { : 3 }
=> 현재 index라는 key값이 중복되어서 문제가 발생한다고 보면 된다.
일단 해당 db로 들어가서 collection에 대한 인덱스(키라고 생각하면 편할듯)의 값들을 보자.
db.collection.getIndexes() 명령어를 친다.
내가 mongoose를 사용하여 key값으로 지정한 필드는 wheel_name, index임을 알 수있다. (_id는 기본 key값임 무시)
나같은 상황은 원래 index를 키값으로 사용했으나 이를 없애고 wheel_name을 인덱스로만 사용하고자 한다.
따라서 index라는 키 설정을 지워야한다.
위 사진의 "key":{"index":1} 의 key 필드에 대한 value값을 주목하자 해당 값으로 지워야한다.
db.collection.dropIndex({key에 해당하는 value값}) 명령어를 치면 index가 잘 지워진다.
반응형
'JS > Mongodb' 카테고리의 다른 글
mongodb 버리고 관계형 db로 갈아타자 (0) | 2018.06.01 |
---|---|
몽고DB 3.4에서 3.6으로 업데이트 하기 (0) | 2018.04.26 |
Nodejs Mongoose 게시물 페이징처리하기 (0) | 2018.04.12 |
MeanStack - Mongoose에서 데이터를 찾아서 Json으로 내보낼때 throw new TypeError('first argument must be a string or Buffer'); (1) | 2016.07.19 |
MeanStack - 몽구스에서 콜렉션을 참조할때 끝에 s를 붙여서 참조해버릴때 (0) | 2016.07.19 |