我已经阅读了MongoDB的官方文档,但实际上无法理解稀疏索引和部分索引之间的区别.希望得到一个带有例子的解释性视图.提前致谢!!!!
sty*_*dev 27
稀疏索引是一个优化索引,它只包含指向索引字段中具有值的文档的指针.例如,假设您要在lastname字段上添加索引
{ _id: 1, firstname: 'John', lastname: 'Black', age: 20 }
{ _id: 2, firstname: 'Stive', lastname: 'White', age: 17 }
{ _id: 3, firstname: 'Tom', age: 22 }
Run Code Online (Sandbox Code Playgroud)
如果你跑
db.users.createIndex({ lastname: 1 });
Run Code Online (Sandbox Code Playgroud)
命令,它将在3个文档上添加索引,但是您不需要在文档上有索引,其中没有lastname值(_id:3); 这是浪费空间和记忆.为了避免空字段的索引,mongodb有sparse
索引,这只是"检查非空值".所以当你添加sparse: true
db.users.createIndex({ lastname: 1, sparse: true });
Run Code Online (Sandbox Code Playgroud)
Mongodb将仅为2个文档添加索引(_id:1,_id:2).它很棒,但如果您只想索引那些超过18年的用户文档呢?您不能使用稀疏索引,因为它只检查文档的值是否存在.
这就是partial indexes
创建的原因.
db.person.createIndex(
{ age: 1},
{ partialFilterExpression: { age: { $gte: 18 }, lastname: { $exists: true }}
);
Run Code Online (Sandbox Code Playgroud)
此示例仅为1个文档(id:1)放置索引.部分索引是稀疏的复杂版本,它将过滤文档,不仅检查它们的存在,还使用partialFilterExpression
字段中提供的条件.
归档时间: |
|
查看次数: |
2679 次 |
最近记录: |