MongoDB:在"where"上选择复合索引



我有以下MongoDB模式:

  mandate: {
    type: mongo.Schema.Types.ObjectId,
    ref: 'Mandate',
    required: true
  },
  observer: {
    type: mongo.Schema.Types.ObjectId,
    ref: 'Observer',
    required: true
  },
  value: {
    type: Number,
    required: true
  },
  observedAt: {
    type: Date,
    required: true
  }

这个集合包含了大量的数据。

我以以下方式请求数据:给我所有数据从2015年到2016年观察在哪里观察者="a"和command = "b"

对于3个字段(observer, mandate, observedAt)的复合索引是否有最佳实践方法?

今天,我这样做:

schema.index({
  mandate: 1,
  observer: 1,
  observedAt: -1
});

这条路对吗?

如果您总是使用所有这3个字段进行查询,就像您的示例一样,那么是的,这很好。同样,因为您使用observedAt作为最后一个索引,您也可以通过该字段sort,并且它仍将在排序阶段使用索引。

但是如果你的查询可以改变使用更少或更多的字段,所以它可能不是最好的选择。在这里阅读更多关于它的内容,特别是查看示例

https://docs.mongodb.com/manual/core/index-compound/

相关内容

  • 没有找到相关文章

最新更新