Mongodb将_id设置为递减指数

ma0*_*a08 6 indexing mongoose mongodb

我想使用mongodb的默认值_id但按降序排列.我想存储帖子,并希望在我使用时从头开始获取最新帖子find().我正在使用猫鼬.我试过了

postSchema.index({_id:-1})
Run Code Online (Sandbox Code Playgroud)

但它不起作用

> db.posts.getIndexes()
  [
{
    "v" : 1,
    "key" : {
        "_id" : 1
    },
    "name" : "_id_",
    "ns" : "mean-dev.posts"
}]
Run Code Online (Sandbox Code Playgroud)

我删除了数据库并重新启动了mongod.没有运气.有没有办法使用mongodb的默认索引在同一时间将_id设置为递减索引?我不想用它sort()来逐步对结果进行排序_id.

Chr*_*n P 7

简短的回答

不,您无法在_id字段上创建降序索引.您也无法删除它以将其重新创建为降序索引.Mongo将在_id字段上执行降序排序时使用默认索引.

答案很长

文档中所述,_id字段上的MongoDB索引会自动创建为升序唯一索引,您无法将其删除.

您也不需要在_id字段上创建额外的降序索引,因为MongoDB可以使用默认索引进行排序.

要验证MongoDB是否使用索引进行排序,可以使用explain命令:

db.coll.find().sort({_id : -1}).explain();
Run Code Online (Sandbox Code Playgroud)

在output explain命令中,相关部分是

"cursor" : "BtreeCursor _id_ reverse"
Run Code Online (Sandbox Code Playgroud)

这意味着MongoDB使用索引以相反的顺序对查询进行排序.