【问题标题】:what is Sparse? what is the purpose of sparse in mongodb?什么是稀疏? MongoDB中稀疏的目的是什么?
【发布时间】:2019-12-26 09:09:14
【问题描述】:

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

【问题讨论】:

  • 这看起来像是您复制了解释稀疏的评论或工具提示,但忘记说明您的问题是什么。你到底有什么不明白的?它会帮助你看一个例子吗?您能否添加一些有关您要实现的目标的背景信息?

标签: mongodb mongodb-query sparse-matrix


【解决方案1】:

稀疏索引类似于 mongodb 中的常规索引。不同的是,稀疏索引只包括具有索引字段的文档,而常规索引包括所有文档,无论索引字段是否存在。

例如,当您在客户集合的年龄字段上创建索引时,并非每个客户都有年龄信息,稀疏索引将排除没有年龄字段的客户,而常规索引将包括所有客户,甚至如果客户没有年龄价值。假设客户集合中有 10 亿个文档,其中一半没有年龄存档,年龄上的稀疏索引将节省大量内存空间。

通过添加 {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});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 2015-01-30
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多