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

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: 一日一技:如何正确获取 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数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
5天前
|
监控 NoSQL MongoDB
mongoDB查看数据的插入日志
【5月更文挑战第2天】mongoDB查看数据的插入日志
32 0
|
11天前
|
分布式计算 DataWorks NoSQL
DataWorks产品使用合集之DataWorks 中同步 MongoDB 数据的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
27 4
|
12天前
|
NoSQL 数据管理 MongoDB
数据管理DMS产品使用合集之如何通过阿里云的数据管理服务(DMS)导出MongoDB数据
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
12天前
|
NoSQL Linux 网络安全
【专栏】在 RHEL 8 或者 CentOS 8 上顺利安装并运行MongoDB,以处理非结构化数据和扩展技术栈
【4月更文挑战第28天】本文档介绍了如何在RHEL或CentOS 8上安装MongoDB,包括环境准备(系统更新、依赖安装、硬件需求和sudo用户)、导入MongoDB GPG公钥、创建Yum仓库、安装MongoDB社区版,以及后续的基本配置和验证(启动服务、防火墙设置和连接验证)。通过这些步骤,用户可以顺利安装并运行MongoDB,以处理非结构化数据和扩展技术栈。
|
1月前
|
JSON NoSQL MongoDB
mongodb通过mongoexport命令导出数据
mongodb通过mongoexport命令导出数据
|
1月前
|
JSON NoSQL MongoDB
mongodb导出聚合查询的数据
mongodb导出聚合查询的数据
|
1月前
|
NoSQL MongoDB
使用MongoTemplate 对 mongodb数据进行分组、排序、分页、连表查询
使用MongoTemplate 对 mongodb数据进行分组、排序、分页、连表查询
|
1月前
|
存储 NoSQL 关系型数据库
MongoDB 的数据关系
MongoDB是面向文档的NoSQL数据库,以其灵活的数据模型区别于传统关系型数据库。数据以JSON-like文档形式存储,文档可嵌套并存储在集合中。其特点包括:嵌入式文档、弱类型架构(无模式)、无连接性及引用关系。MongoDB支持动态添加字段,通过嵌入或引用处理文档关联,适应各种数据结构和复杂关系,适合不同应用场景。
|
2月前
|
NoSQL MongoDB
MongoDB数据日期显示相差8小时
MongoDB数据日期显示相差8小时
26 0
|
3月前
|
JSON NoSQL MongoDB
mongoDB数据的导出导入
mongoDB数据的导出导入