优化 MongoDB 索引(两个字段查询)

Optimizing MongoDB indexing (two fields query)

我在名为 inventory 的 mongodb 集合中有两个字段 scheduledStampemail

有以下 jpa 查询:

fun findAllByScheduledStampAfterAndEmailEquals(scheduledStamp:Long,email:String):List<Inventory>

索引此集合的最佳方法是什么?

我希望索引尽可能少,避免不必要的索引。

知道:

如果您只需要支持对电子邮件的查询:索引电子邮件是必须的

如果只需要在scheduledStamp上支持查询:索引scheduledStamp是必须的

如果你想查询两者,需要第三个索引。但是您可以创建一个复合索引来覆盖此查询和上述查询之一。

因为 Mongo 遵循前缀匹配来选择索引:

您可能在 {"email":1} 和 {"scheduledStamp:1","email":1} 上有索引

您可能在 {"scheduledStamp":1} 和 {"email:1","scheduledStamp":1} 上有索引

但是因为你说了这些字段 return 很少有文档: 只要在 {"email":1} 和 {"scheduledStamp":1} 上有 2 个索引,即使不是最佳,也可能表现良好。