首页 文章

MongoDB排序顺序和唯一字段

提问于
浏览
0

我正在使用像这样的mongoose架构:

{
  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

    首先让我们记下你正在更具体地讨论Mongoose如何作为MongoDB的中介 . 我的意思是在mongoose模式中定义这样的东西:

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

    实际上意味着(通过使用 unique: true )你 ARE 在字段 numero 上创建一个唯一索引,而 index: true 部分是可选的as per the documentation .

    所以你不需要实际创建另一个索引 .

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

    就最佳实践而言,您应该检查查询数据的方式,并且非常重要的是,您需要了解哪种类型的数据才能确定所需的索引类型 . 例如,如果你有 lat/lng 数据,你可能应该使用 Geospatial Index 等 .

    你也不想因为brings other issues as well而对索引感到疯狂 .

    查看MongoDB正在做什么的非常重要的工具是explain operator,它为您提供有关查询计划的信息 .

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

    您还可以通过以下方式查看收集统计信息

    db.getCollection('your-collection-name').stats()
    

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

    希望这可以帮助 .

相关问题