我正在使用像这样的猫鼬模式:
{
numero: {
type: Number,
required: true,
unique: true
},
capacidad: {
type: Number,
required: true
}
}
当我检索集合的文档时(例如使用Model.find({})
),我得到按_id
排序的文档。
我的问题是:
unique: true
需求,但是它不将其用作默认排序机制吗?Model.find({}).sort("numero")
是使用索引来处理唯一性还是必须为查询创建另一个索引?答案 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()
这将为您提供有关集合中当前索引的大小等的良好信息。
希望这会有所帮助。