2014-12-17 5 views
1

나는이 같은 필드에 고유 인덱스가 수집하는 경우 :mongo db의 희귀 고유 인덱스로 고유 인덱스를 변경 하시겠습니까?

collection.User.ensureIndex({username:1}, {unique: true})

가 어떻게 그래서 그것을 변경할 수 있습니다 인덱스가 고유한지 스파 스? 다음을 실행하면 인덱스를 업데이트하지 않는 것 : 인덱스가 존재하지 않는 경우

collection.User.ensureIndex({username:1}, {unique: true, sparse:true})

답변

0

ensureIndex 지정된 필드에 인덱스를 생성합니다. 색인을 변경하려면 색인을 먼저 삭제 한 다음 ensureIndex에 새 옵션으로 다시 전화해야합니다.

collection.User.dropIndex("username_1"); 
collection.User.ensureIndex({username:1}, {unique: true, sparse:true}) 

는 MongoDB의 문서에서 발췌 :

추가 또는 변경 인덱스 옵션을 사용하면 dropIndex() 메소드를 사용하여 인덱스를 삭제하고 새로운 옵션으로 다른 ensureIndex() 작업을 실행해야합니다.

+1

아, 그럼. 이 경우에는 sparse를 추가하면 제약 조건이 줄어들 기 때문에 다소 바보입니다. 인덱스를 다시 작성하지 않아도됩니다. 오 잘 .. –