我读过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. 索引和分片有什么区别
- 4. MongoDB的化合物稀疏索引
- 5. 稀疏索引在MATLAB
- 6. 分别对2列进行索引和每列的索引有什么区别?
- 7. mongo中的稀疏索引和空值
- 8. 表索引和视图索引之间的区别是什么?
- 9. Numpy:为稀疏矩阵创建索引
- 10. MongoDB中的空数组上的多密钥稀疏索引
- 11. mongodb使用什么索引?
- 12. 使用索引查询时1复合索引键和单独索引键有什么区别
- 13. ref T索引器和get/set索引器有区别吗?
- 14. Elasticsearch中的索引和索引之间是否有区别?
- 15. B C#和JavaScript中的树和稀疏索引算法
- 16. SQL Server中的OFFLINE和ONLINE索引重建有什么区别?
- 17. 索引,缓存和在git中上演有什么区别?
- 18. 列表索引中的[[]]和$有什么区别?
- 19. 表扫描和聚簇索引扫描有什么区别?
- 20. 索引提示中USE和FORCE有什么区别?
- 21. cassandra中的行键,主键和索引有什么区别?
- 22. 发布工具和索引处理程序有什么区别?
- 23. 非聚集索引和非聚集索引的区别是什么
- 24. “按表索引”和“按记录表索引”之间的区别是什么?
- 25. MySQL索引:索引2个字段的方式有什么区别?
- 26. 复合主索引与两个主索引之间有什么区别?
- 27. MongoDB的索引和非索引性能
- 28. Mongodb索引或不索引
- 29. 的MongoDB和索引
- 30. 的Oracle 11g引用分区和索引
它在这里解释:[与稀疏指数比较](https://docs.mongodb.com/manual/core/index-partial/#comparison-with-the-sparse-index) – felix