MongoDB排序顺序和唯一字段

时间:2018-08-24 16:33:43

标签: database indexing mongoose mongoose-schema

我正在使用像这样的猫鼬模式:

{
  numero: {
    type: Number,
    required: true,
    unique: true
  },
  capacidad: {
    type: Number,
    required: true
  }
}

当我检索集合的文档时(例如使用Model.find({})),我得到按_id排序的文档。

我的问题是:

  • MongoDB创建一个索引来处理unique: true需求,但是它不将其用作默认排序机制吗?
  • 如果我这样做了,Model.find({}).sort("numero")是使用索引来处理唯一性还是必须为查询创建另一个索引?
  • 如果我定义自己的索引(schema.index({numero:1}),我是否要复制工作?
  • 总结一下,维护要查询的集合的最佳实践是什么?

1 个答案:

答案 0 :(得分:0)

首先,请注意您正在谈论的是Mongoose作为MongoDB中介者是如何做的事情。我的意思是在猫鼬模式中定义如下内容:

numero: {
  type: Number,
  required: true,
  unique: true
}

实际上意味着(通过使用unique: true),您在字段numero上创建了唯一索引,而index: true部分是可选的{{3 }}。

因此您不需要实际创建另一个索引。

这也应该回答有关使用索引的Model.find({}).sort("numero")的问题。

就最佳实践而言,您应该查看查询数据的方式,并且非常重要的是,要掌握所需的数据类型,以便确定所需的索引类型。例如,如果您有lat/lng数据,则可能应该使用Geospatial Index等。

您也不想因为索引as per the documentation而疯狂。

查看brings other issues as well也是MongoDB所做的非常重要的工具,它为您提供有关查询计划的信息。

您应该经常使用它来分析和优化查询,并找出瓶颈所在。

您还可以通过

查看您的收藏统计信息
db.getCollection('your-collection-name').stats()

这将为您提供有关集合中当前索引的大小等的良好信息。

希望这会有所帮助。