文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2020-12-13 14:35

关注


	一日一技:如何正确获取 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)  # 此时会倒序输出内容

运行效果如下图所示:

技术图片
需要注意,对游标对象执行了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)

运行效果如下图所示:
技术图片

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

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

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


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

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


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

运行效果如下图所示:
技术图片

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

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

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯