我讀過MongoDB的官方文檔,但實際上無法理解稀疏和部分索引之間的區別。希望通過實例進行解釋性觀點。提前致謝!!!!部分索引和稀疏索引mongodb有什麼區別?
1
A
回答
7
稀疏索引是優化的索引,它只包含指向索引字段中具有值的文檔的指針。 例如,你想在姓氏字段
{ _id: 1, firstname: 'John', lastname: 'Black', age: 20 }
{ _id: 2, firstname: 'Stive', lastname: 'White', age: 17 }
{ _id: 3, firstname: 'Tom', age: 22 }
如果您運行
db.users.createIndex({ lastname: 1 });
命令,它會在3個文件添加索引添加索引,但是你並不需要對文檔索引沒有姓氏值(_id:3)。它浪費空間和記憶。 爲了避免空字段的索引,mongodb有sparse
索引,它只是檢查非空值。 所以,當你添加sparse: true
db.users.createIndex({ lastname: 1, sparse: true });
的MongoDB只2個文件添加索引(_id:1,_id:2)。它很棒,但如果你只想索引那些超過18年的用戶文檔,該怎麼辦? 你不能使用稀疏索引,因爲它只檢查文檔是否存在值。
這就是爲什麼partial indexes
被創建。
db.person.createIndex(
{ age: 1},
{ partialFilterExpression: { age: { $gte: 18 }, lastname: { $exists: true }}
);
這個例子將索引僅用於1個文檔(id:1)。部分索引是稀疏的複雜版本,它將過濾文檔,不僅檢查它們的存在,還會使用partialFilterExpression
字段中提供的條件。
+0
a非常好的解決方案,實際上我正在尋找一個非常乾淨和簡單的解決方案。謝謝 !!!。如果您發現此問題有用/有趣,請將其標記爲或最愛。 –
相關問題
- 1. MongoDB TTL稀疏索引?
- 2. MongoDB的稀疏索引和片鍵
- 3. 的MongoDB:稀疏的獨特價值和稀疏複合索引
- 4. MongoDB稀疏索引和數組:太多索引的文檔
- 5. 索引和分片有什麼區別
- 6. MongoDB的化合物稀疏索引
- 7. 稀疏索引在MATLAB
- 8. scipy稀疏矩陣索引
- 9. 散列和索引有什麼區別?
- 10. 分別對2列進行索引和每列的索引有什麼區別?
- 11. mongo中的稀疏索引和空值
- 12. MySQL索引定義,有什麼區別?
- 13. 表索引和視圖索引之間的區別是什麼?
- 14. Numpy(稀疏)重複索引增量
- 15. Numpy:爲稀疏矩陣創建索引
- 16. 一起或分別聲明索引,有什麼區別?
- 17. MongoDB解決方法不支持稀疏唯一複合索引
- 18. MongoDB中的稀疏索引不起作用?
- 19. MongoDB聚合是否使用稀疏索引
- 20. MongoDB中的空數組上的多密鑰稀疏索引
- 21. MongoDb使用C++驅動程序創建稀疏索引
- 22. 索引掃描,表掃描和索引查找有什麼區別?
- 23. mongodb使用什麼索引?
- 24. 使用索引查詢時1複合索引鍵和單獨索引鍵有什麼區別
- 25. Elasticsearch中的索引和索引之間是否有區別?
- 26. ref T索引器和get/set索引器有區別嗎?
- 27. B C#和JavaScript中的樹和稀疏索引算法
- 28. cassandra中的行鍵,主鍵和索引有什麼區別?
- 29. 發佈工具和索引處理程序有什麼區別?
- 30. SQL Server中的OFFLINE和ONLINE索引重建有什麼區別?
它在這裏解釋:[與稀疏指數比較](https://docs.mongodb.com/manual/core/index-partial/#comparison-with-the-sparse-index) – felix