我想获取最新的文档,这显然是一个单独的文档,因此findOne应该可以.但是这里的findOne返回插入的第一个文档.所以我现在有两个 Select ,或者使用$orderByfindOne,或者使用.sort()函数和.limit()find()

使用$orderBy时,它看起来像:

db.collection.findOne({$query:{},$orderby:{_id:-1}}) 

使用排序:

db.collection.find().sort({_id:-1}).limit(1).pretty()

两者都很好,我只是想知道我应该 Select 哪种查询?在性能方面,或者两者在内部的工作方式相同,两者之间没有这种差异.

推荐答案

截至Mongo 3.2,$orderby等于deprecated.

docs explicitly say人:

$orderby运算符已弃用.使用光标.而不是sort().

不幸的是,findOne()不支持sort()方法,因此您需要切换到find():

db.collection.find({}).sort({'key': -1}).limit(1)

这将返回cursor,因此需要从光标中提取第一个结果.

Mongodb相关问答推荐

MongoDB聚合匹配字符串字符

我们可以在Mongoose中这样使用Unique:[True,";This to Unique&qot;]吗

MongoDB聚合$group阶段$top与$first在大型数据集上的效率

将子文档中的所有字段设置为 false,然后在单个查询中将第二个字段设置为 true

mongoose通过引用属性查找文档

如何使用 Spring Data MongoDB 通过 GridFS ObjectId 获取二进制流

Mongo 可尾游标与 Redis 发布/订阅

Mongodb:查询嵌套在数组中的json对象

Node.js 和 Passport 对象没有方法 validPassword

Golang/mgo:如何让 MongoDB 在字段中使用当前时间?

如何返回 MongoDB 中文档的 ObjectId 或 _id?和错误$in 需要一个数组

无法连接到远程 mongodb 服务器

使用 MongoDB Java 驱动程序将 DBObject 转换为 POJO

MongoError:Topology is closed, please connect despite established database connection

mongoose字符串到 ObjectID

多次使用位置 `$` 运算符来更新嵌套数组

MongoDb 连接被拒绝

如何通过键名从 mongoDB 中检索值?

spring 数据MongoDB.生成id的错误

如何在 Mongoid 中引用嵌入的文档?