[英]What is difference between partial indexes and sparse indexes mongodb?
我已经阅读了 MongoDB 的官方文档,但真的无法理解稀疏索引和部分索引之间的区别。 我想有一个带有示例的解释性视图。
稀疏索引是一种优化索引,它只包含指向在索引字段中具有值的文档的指针。 例如,假设您想在姓氏字段上添加索引
{ _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
使用partialFilterExpression
字段中提供的条件来过滤文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.