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

时间:2019-12-26 09:09:14

标签: mongodb mongodb-query sparse-matrix

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

1 个答案:

答案 0 :(得分: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});
相关问题