我读过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