例如,这是我们的文档架构,在 created_at 字段中有降序索引。
var titles = {
title: String,
created_at:{
type: Date,
index: -1
}
}
以下是2个问题:
第一
如果我们致电db.titles.find()
或db.titles.findOne()
,结果顺序如何?
我的意思是它将以desc或asc顺序返回对象?
第二 这边怎么样?
db.titles.find().sort({created_at: -1})
MongoDB如何在上面的代码中表现? 动态排序,或者只使用我们在架构中定义的索引顺序?
答案 0 :(得分:2)
1st:如果我们调用db.titles.find()或db.titles.findOne(),结果如何 订单会吗?我的意思是它将以desc或asc顺序返回对象?
它将返回natural order中的文档 - 按顺序将文档存储在磁盘上。如果要按created_at
对文档进行排序,则应明确指定:
db.titles.find().sort({created_at: -1})
MongoDB如何在上面的代码中表现?即时对结果进行排序 或者它只使用我们在模式中定义的索引顺序?
由于您已在created_at
字段上有索引,因此Mongo将使用它。但是如果你要添加一些查询
db.titles.find({title: /Foo/}).sort({created_at: -1})
然后Mongo将无法再使用您的索引对查询结果进行排序,并将被迫对其进行即时排序。
您可以找到更多aboun MongoDB索引in this blog post。