source

MongoDB에서 수집이 중단되면 인덱스도 자동으로 삭제됩니까?

nicesource 2023. 6. 28. 21:48
반응형

MongoDB에서 수집이 중단되면 인덱스도 자동으로 삭제됩니까?

Mongo에서 컬렉션을 만들고 이 컬렉션에 문서를 추가한 후 사용하는 경우ensureIndex()예를 들어, 이 컬렉션에 있는 문서의 숫자 필드에 인덱스를 만들려면 컬렉션을 삭제한 경우 인덱스를 다시 만들어야 합니까?

간단한 대답: 네.

수집 드롭 시 인덱스가 삭제됩니다.인덱스를 다시 만들어야 합니다.

수집을 삭제하지 않고 다음을 사용하여 수집의 모든 항목을 제거할 수 있습니다.db.collection_name.remove({})더 많은 리소스가 필요하지만 인덱스는 그대로 유지됩니다.실제로 모든 인덱스 데이터를 삭제해야 합니다.따라서 전체 컬렉션을 삭제하고 이후 인덱스를 다시 만드는 것이 더 선호됩니다.

인덱스가 10개인 컬렉션에서 이 작업을 수행했을 뿐 수동으로 재생성하지는 않았습니다.mongo 셸에서 다음 세 줄을 사용하여 인덱스를 삭제하고 다시 만들 수 있습니다.

var indexes = db.collection.getIndexKeys().splice(1)
db.collection.drop();
indexes.forEach(function(el){ db.collection.ensureIndex(el, {background:true}); })

고유하거나 희소한 인덱스를 처리할 만큼 똑똑하지는 않지만 getIndexes()의 출력을 대신 사용하면 지원하기가 상당히 쉬울 것입니다.저는 그것이 필요하지 않았기 때문에 그것을 하지 않았습니다.

스플라이스(1)는 _id의 인덱스를 제거하기 위한 것입니다. _id가 자동으로 생성되기 때문입니다.

컬렉션을 삭제하면 모든 인덱스가 삭제되므로 컬렉션을 재생성할 때(명시적으로 또는 새 문서를 추가하여 암시적으로) 표시해야 하는 인덱스를 재생성해야 합니다.의 기본 인덱스_id자동으로 생성됩니다.

언급URL : https://stackoverflow.com/questions/8506345/in-mongodb-if-collection-is-dropped-indexes-dropped-automatically-as-well

반응형