Mongodb索引建议

时间:2014-03-01 03:54:37

标签: mongodb indexing

所有

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

  1. _ID
  2. 标题
  3. 描述
  4. 标签,数组
  5. 我在_id和tags字段上创建了2个索引。我已经创建了索引,供人们使用关键字搜索内容。

    我创建了带有标签的索引:-1,以显示最先显示的最新插入记录。但即便如此,它仍以_id的升序显示。

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

1 个答案:

答案 0 :(得分:0)

如果_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为真,则表示查询无法使用索引中的文档顺序返回排序结果。

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