본문 바로가기

보물창고/Big Data

dropdups 인덱스 생성문제 기록

반응형








MongoDB스터디중 dropdups인덱스 생성문제 입니다






mongod 인스턴스 최초 실행 상태에서 테스트 했습니다


> db.a.insert({id:1, name:"a"})

> db.a.insert({id:1, name:"b"})

> db.a.insert({id:2, name:"c"})

> db.a.insert({id:3, name:"d"})

>

> db.a.ensureIndex({id:1},{unique:true, dropdups:true})

{

        "err" : "E11000 duplicate key error index: test.a.$id_1  dup key: { : 1.0 }",

        "code" : 11000,

        "n" : 0,

        "connectionId" : 1,

        "ok" : 1

}



실행 결과가 위와 같은 에러를 표시 했는데요....

확인해보니 dropdups의 명령어에 대문자가 포함되어 있었습니다 

정확한 명령어는 

db.a.ensureIndex({id:1},{unique:true, dropDups:true})

dropdups -> dropDups 로 명령을 하니 정상적으로 해결 되었습니다







추가로 dropdups인덱스는 중복된 값을 제거하면서 유니크한 인덱스를 생성해주는 인덱스 명령어 입니다





name : "d"가 두번 들어 있지만 

dropDups인덱스를 설정하면 중복되는 첫번째 값만 남기고 나머지 데이터를 삭제합니다


db.a.insert({id:1, name:"a"})

db.a.insert({id:1, name:"b"})

db.a.insert({id:2, name:"c"})

db.a.insert({id:3, name:"d"})

db.a.insert({id:4, name:"d"})

db.a.find()

db.a.find({name : "d"})

db.a.ensureIndex({name : 1}, {unique : true, dropDups : true})

db.a.find()

db.a.find({name : "d"})





반응형