我试图从mongo集合中检索一个元素,一个具有最大_id字段的元素.我知道这可以通过查询来完成:
db.collection.find().sort({_id: -1}).limit(1)
Run Code Online (Sandbox Code Playgroud)
但它似乎有点不雅,我想知道是否有办法使用findOne()来获取该特定元素
注意:我想这样做是因为,根据我在ObjectId中读到的内容,第一个字节对应于自Epoch以来的毫秒数,因此,插入的最后一个元素将具有最大的_id.有没有其他方法来检索插入集合中的最后一个元素?
Asy*_*sky 85
您应该使用find
,就像您现在一样,而不是聚合速度较慢,因为它需要扫描_id字段的所有值以确定最大值.
正如评论所指出的,使用find()和findOne()之间没有区别 - 功能上或优雅.事实上,findOne
在shell(以及实现它的驱动程序中)是根据find定义的(限制为-1,在shell中使用漂亮的打印).
如果你真的想做相同的
db.collection.find().sort({_id:-1}).limit(1).pretty()
Run Code Online (Sandbox Code Playgroud)
正如findOne
您可以使用以下语法执行此操作:
db.collection.findOne({$query:{},$orderby:{_id:-1}})
Run Code Online (Sandbox Code Playgroud)
你可以使用mongodb的聚合获得max _id.查找和排序可能有点过头了.
db.myCollection.aggregate({
$group: {
_id: '',
last: {
$max: "$_id"
}
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
58616 次 |
最近记录: |