当前位置: 首页 > 知识库问答 >
问题:

使用mongodb中的findOne获取具有最大id的元素

单于耘豪
2023-03-14

我试图从mongo集合中检索一个元素,即具有greatest _id字段的元素。我知道这可以通过查询:

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

但它似乎有点不优雅,我想知道是否有一种方法可以使用findOne()获取特定元素

注意:我想这样做是因为,根据我在ObjectId中读到的内容,第一个字节对应于从Epoch开始的毫秒,因此,插入的最后一个元素将具有最大的_id。有没有其他方法可以检索插入到集合中的最后一个元素?

共有3个答案

姜弘化
2023-03-14

使用PHP驱动程序(mongodb)
使用< code>findOne()

$filter=[];
$options = ['sort' => ['_id' => -1]]; // -1 is for DESC
$result = $collection->findOne(filter, $options);
$maxAge = $result['age']
东郭子默
2023-03-14

可以使用mongodb的聚合得到max _id。查找和排序可能会矫枉过正。

db.myCollection.aggregate({
    $group: {
        _id: '',
        last: {
            $max: "$_id"
        }
    }
});
咸亦
2023-03-14

您应该使用<code>查找</code>,就像您已经使用的一样,而不是聚合,因为它需要扫描_id字段的所有值来计算最大值,所以聚合会更慢。

正如评论指出的那样,使用find()和findOne()在功能和优雅方面没有区别。事实上,shell(以及实现它的驱动程序)中的findOne是根据find定义的(在shell中有限制-1和漂亮的打印)。

如果你真的想做相当于

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

作为< code>findOne,您可以使用以下语法:

db.collection.findOne({$query:{},$orderby:{_id:-1}})
 类似资料:
  • 本文向大家介绍如何在MongoDB中获取具有最大ID的元素?,包括了如何在MongoDB中获取具有最大ID的元素?的使用技巧和注意事项,需要的朋友参考一下 要获得具有最大id的元素,可以使用方法。为了理解上述概念,让我们用文档创建一个集合。查询如下- 在method的帮助下显示集合中的所有文档。查询如下- 以下是输出- 这是获取具有最大id的元素的查询- 以下是具有最大id的记录的输出-

  • 如何在MongoDB中获得字段中具有最小值或最大值的文档? 与MySQL中的MIN()或MAX()函数类似,但使用NodeJS MongoDB驱动程序。有什么想法吗?

  • 预期输出:获取组之间计数为max的结果行,如: 示例2:这个数据帧,我按分组: 对于上面的示例,我希望获取每个组中等于max的所有行,例如:

  • 本文向大家介绍如何获取MongoDB中不同元素的最大值,包括了如何获取MongoDB中不同元素的最大值的使用技巧和注意事项,需要的朋友参考一下 要获取不同元素的最大值,请在MongoDBgregation()中使用$sort和$group。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是查询以获取MongoDB中不同元素的最大值- 这将产

  • 问题内容: 有一个带和的产品表。我正在尝试使用大多数非null实例获取color_id。 这将失败: 和 这 退货 我正在寻找具有最多实例的color_id 3。 有没有2个查询就可以轻松获得我想要的东西的方法吗? 问题答案: SELECT color_id AS id, COUNT(color_id) AS count FROM products WHERE item_id = 1234 AND

  • 问题内容: 桌子: 我想获取UserId,每个UserId的max(Date)值。即,具有最新日期的每个UserId的值。有没有一种方法可以简单地在SQL中做到这一点?(最好是Oracle) 更新: 对于任何歧义,我们深表歉意:我需要获取所有UserIds。但是对于每个UserId,仅该用户具有最新日期的那一行。 问题答案: 这将检索其my_date列值等于该用户ID的my_date最大值的所有行