스키마를 변경할 때 컬렉션을 삭제하고 다시 만들 필요가 없습니다.
추가 정보 :
스파 스 인덱스는 인덱스 필드에 null 값이 포함 된 경우에도, 인덱스 필드가 문서에 대한 항목이 포함되어 있습니다. 인덱스는 인덱싱 된 필드가없는 모든 문서를 건너 뜁니다. 컬렉션의 모든 문서를 포함하지 않으므로 인덱스가 "드문 드문"입니다. 반대로 비 sparse 인덱스는 컬렉션의 모든 문서를 포함하며 인덱싱 된 필드가없는 문서의 경우 null 값을 저장합니다. 스파 스 인덱스가 쿼리에 대해 설정 완료되지 않은 결과를 초래하고 작업을 분류 할 경우 힌트()가 명시 적으로 인덱스를 지정하지 않는 한
스파 스 인덱스 및 불완전한 결과
는 MongoDB를 그 인덱스를 사용하지 않습니다.
스파 스 색인을 사용한다고해서 스파 스 색인 필드의 유무에 관계없이 레코드를 삽입 할 수는 없으므로 스키마 변경을 처리하기에 충분합니다.
는 아래의 수집을
Collection marks
{_id:1, sub1: 67, sub2: 78, sub3: 56, total: 201}
{_id:2, sub1: 60, sub2: 70, sub3: 50, total: 180}
{_id:3, sub1: 80, sub2: 70, sub3: 50}
Create sparse index
db.marks.createIndex({ total: 1 } , { sparse: true, unique: true })
db.marks.find().sort({ total: -1 })
This query will return all the 3 records, we have applied sort on the sparse indexed field, but MongoDB will not select the sparse index to fulfill the query in order to return complete results.
db.marks.find().sort({ total: -1 }).hint({ total: 1 }), this query will return only 2 records, those who are having the total, so to use the sparse index, explicitly specify the index with hint()
참조
https://docs.mongodb.com/manual/core/index-sparse/
https://docs.mongodb.com/manual/core/index-sparse/#sparse-index-incomplete-results
희망은 도움을 참조하십시오!
고유 인덱스를 추가하거나 스파 스를 설정할 때 컬렉션을 삭제해야한다는 것은 무엇을 의미합니까? 그건 100 % 거짓입니다. – sergiuz
이 색인을 적용하는 데 사용하는 코드를 제공 할 수 있습니까? 색인을 적용하려면 컬렉션을 삭제할 필요가 없습니다. – pieperu
인덱스 필드가 새 문서에있는 경우 전체 컬렉션을 삭제해야한다고 생각하지 않습니다. 새롭고 오래된 문서를 공유 할 수 있습니까? – rushUp