【问题标题】:Mongodb Indexing suggestionsMongodb 索引建议
【发布时间】:2014-03-01 03:54:37
【问题描述】:

全部,

我有一个包含以下字段的 mangodb 集合。

  1. _ID
  2. 标题
  3. 说明
  4. 标签、数组

我在 _id 和 tags 字段上创建了 2 个索引。我创建了索引供人们使用关键字搜索内容。

我创建了带有标签的索引:-1 以显示最先显示的最新插入记录。但即使在那之后它也以_id的升序显示。

如何在标签字段上创建索引以显示最后插入的内容,同时它应该允许我更快地搜索标签字段。

【问题讨论】:

    标签: mongodb indexing


    【解决方案1】:

    如果_id字段是默认的ObjectId,反映了插入顺序,并且你想按插入顺序降序查询所有带有特定标签的文档,可以使用如下查询:

    find({ Tags : $value }).sort({ _id : -1 })
    

    对于此查询,您可以在 { Tags : 1, _id : -1 } 上创建复合索引。具有相同标签的所有文档将按插入顺序降序排序,此索引应该适用于此查询。

    请注意,如果您对标签进行范围查询,例如:

    find({ Tags : { $in : [ $value1, $value2 ] }}).sort({ _id : -1 })
    find({ Tags : { $gt : $value}}).sort({ _id : -1})
    

    它将无法使用索引对结果文档进行排序,并且需要在内存中对结果进行排序。您可以使用.explain(true) 运行查询以检查查询计划。如果scanAndOrder 为真,则表示查询不能使用索引中文档的顺序来返回排序结果。

    还有一些与索引相关的文档和博客,我建议您阅读:

    【讨论】:

      猜你喜欢
      • 2018-03-23
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 2017-11-01
      • 2011-11-10
      相关资源
      最近更新 更多