什么是稀疏? mongodb中稀疏的目的是什么?

问题描述 投票:0回答:1

sparse Boolean如果为true,则索引仅引用具有指定字段的文档。这些索引使用较少的空间,但是在某些情况下(尤其是排序)表现不同。默认值为false。

mongodb mongodb-query sparse-matrix
1个回答
0
投票

稀疏索引就像mongodb中的常规索引。区别在于稀疏索引仅包含具有索引字段的文档,而常规索引则包括所有文档,无论索引字段是否存在。

例如,当您在客户集合的年龄字段上创建索引时,并不是每个客户都有文件中的年龄信息,稀疏索引将排除没有年龄字段的客户,而常规索引将包括所有客户,即使客户没有年龄价值。想象一下,在客户集合中有十亿个文档,其中有一半没有存档期限,因此稀疏的索引索引将节省大量存储空间。

通过添加{sparse:true}为客户集合的年龄创建稀疏索引

db.customers.createIndex( { age: 1 }, { sparse: true } );

此查询将使用稀疏索引,因为查询中的条件与稀疏索引非常吻合。我们只想返回年龄超过21岁的客户,如果该客户没有记录在案的年龄,我们将不包括在内。

db.customers.find({age: {$gt:21}});

此查询将不使用稀疏索引,它将返回所有文档,包括那些没有年龄字段的文档。

db.customers.sort({age:1});

此查询将使用稀疏索引,它将仅返回具有年龄字段的文档。

db.customers.sort({age:1}).hint({age:1});
© www.soinside.com 2019 - 2024. All rights reserved.