一日一技:如何正确获取 MongoDB 集合里面的最后一条数据「终于解决」

一日一技:如何正确获取 MongoDB 集合里面的最后一条数据「终于解决」一日一技:如何正确获取MongoDB集合里面的最后一条数据摄影:产品经理厨师:kingname在我们使用Python查询MongoDB的时候,一般会使用MongoDB的集合(collection)对…

	一日一技:如何正确获取 MongoDB 集合里面的最后一条数据[数据库教程]

一日一技:如何正确获取 MongoDB 集合里面的最后一条数据

一日一技:如何正确获取 MongoDB 集合里面的最后一条数据

摄影:产品经理
厨师:kingname
在我们使用 Python 查询 MongoDB 的时候,一般会使用MongoDB 的集合(collection)对象的 find()方法或者find_one()方法:


import pymongo

handler = pymongo.MongoClient().chapter_7.example_data_4

# 获得一个游标操作对象,并迭代
rows = handler.find()
for row in rows:
    print(row)

# 查询第一条数据
row = handler.find_one()
print(row)

其中,find()方法返回的是一个游标对象,我们可以直接对这个对象进行迭代,从而按顺序获取每一条数据。

这个游标对象还有一个sort()方法,可以对迭代返回的数据进行排序,例如想对数据按照_id倒序显示,那么可以把代码写为:


rows = handler.find().sort(‘_id‘, -1)
for row in rows:
    print(row)  # 此时会倒序输出内容

运行效果如下图所示:

一日一技:如何正确获取 MongoDB 集合里面的最后一条数据
需要注意,对游标对象执行了sort()方法以后,返回的依然是游标对象。所以如果我们只想获取最后一条数据怎么办呢?有如下2种方法:


rows = handler.find().sort(‘_id‘, -1).limit(1)  # 倒序以后,只返回1条数据

for row in rows:  # 这个循环只会执行1次
    print(row)

或者我们可以使用第二种方式:


rows = handler.find().sort(‘_id‘, -1)
row = next(rows)

运行效果如下图所示:
一日一技:如何正确获取 MongoDB 集合里面的最后一条数据

这是由于游标对象是一个可迭代对象,所以可以使用next函数获取它第一次迭代的值。

我们平时使用find_one()时,返回的都是第一个满足条件的数据,那么有办法返回最后一个满足条件的数据呢?

由于 find_one()返回的数据是None或者一个字典。他们都没有sort()方法,所以不能使用下面这种写法:


row = handler.find_one().sort(‘_id‘, -1)

正确的写法,是把sort作为参数写在find_one()方法里面:


row = handler.find_one(sort=[(‘_id‘, -1)])

运行效果如下图所示:
一日一技:如何正确获取 MongoDB 集合里面的最后一条数据

作为参数的sort,它的值是一个列表,列表里面的每一个元素都是元组,元组的第一个值为需要被排序的字段名,第二个值为1或者-1,1表示正序,-1表示倒序。如果列表里面有多个元组,那么先按第一个元组对应的字段排序,第一次排序的结果里面,值相同的再按第二个元组对应的字段排序,以此类推。

一日一技:如何正确获取 MongoDB 集合里面的最后一条数据

原文地址:https://blog.51cto.com/15023263/2558961

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6603.html

(0)
上一篇 2023-04-06
下一篇 2023-04-06

相关推荐

  • Python判断字符串中是否包含指定字符串的方法

    Python判断字符串中是否包含指定字符串的方法在Python开发中,我们常常需要对字符串进行处理。要想对字符串进行操作,首先需要对字符串的特定部分进行定位,判断其是否包含指定的字符串是至关重要的。在本文中,我们将详细解释Python中判断字符串中是否包含指定字符串的方法。

    2024-05-10
    65
  • Navicat Premium安装「建议收藏」

    Navicat Premium安装「建议收藏」“Navicat”是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和/或 MongoDB 等不同

    2023-02-21
    142
  • Pgpool-II常用命令[通俗易懂]

    Pgpool-II常用命令[通俗易懂]启动pgpool:如果加-D,表示忽略上一次每个节点的状态 pgpool -n -d -D 从虚拟IP连接数据库: psql -h 192.168.119.200 -p 9999 查看postgre…

    2022-12-15
    143
  • sql server2020_在SQL

    sql server2020_在SQLSQL Server 2022来了 微软SQL Server依然保持着3年内发布一个大版本的传统,最新版本已经来到SQL Server2022 相关特性双向HA/DR 到Azure SQLSQL Se

    2023-05-01
    153
  • Redis学习笔记:C#中的使用

    Redis学习笔记:C#中的使用1、新建一个WinForm窗体,命名为Main: 2、在NuGet中安装StackExchange.Redis。 3、添加一个类,命名为RedisHelper。 public static class

    2023-02-01
    159
  • Python快速注释技巧

    Python快速注释技巧在编写代码的过程中,我们时常会遇到新的需求、新的技术难点或是不可预知的bug。此时,阅读代码的团队成员可能并不清楚我们的思路,并且在阅读一些复杂的代码时,有时代码的意图并不是那么显然。好的注释可以为别人阅读和理解代码提供便利,并帮助团队成员更好地进行协作。另外,在我们自己进行代码回顾或者重构的时候,注释也是非常重要的。

    2024-07-06
    37
  • Mongodb学习总结

    Mongodb学习总结Mongodb相关操作总结

    2023-02-13
    140
  • [20220104]in list 几种写法性能测试.txt

    [20220104]in list 几种写法性能测试.txt[20220104]in list 几种写法性能测试.txt–//以前写过几种in list的写法,从来没有测试过这几种方法的性能测试看看.1.环境:SCOTT@book> @ver1PORT

    2023-05-03
    152

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注