所有
我有一个带有以下字段的mangodb集合。
我在_id和tags字段上创建了2个索引。我已经创建了索引,供人们使用关键字搜索内容。
我创建了带有标签的索引:-1,以显示最先显示的最新插入记录。但即便如此,它仍以_id的升序显示。
如何在标记字段上创建索引以显示最后插入的内容,同时显示它应该允许我更快地搜索标记字段。
答案 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
为真,则表示查询无法使用索引中的文档顺序返回排序结果。
还有一些文档和博客与索引相关,我建议您阅读: