楼主: 时光永痕
891 1

[数据挖掘新闻] 使用PyMongo查询MongoDB数据库! [推广有奖]

  • 0关注
  • 14粉丝

svip3

学术权威

12%

(VIP/贵宾)三级

46%

威望
0
论坛币
26 个
通用积分
49.7576
学术水平
4 点
热心指数
4 点
信用等级
4 点
经验
34070 点
帖子
2731
精华
0
在线时间
316 小时
注册时间
2020-7-21
最后登录
2024-4-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
使用PyMongo查询MongoDB数据库!
随着互联网的全球普及,我们现在正在以前所未有的速度生成数据。因为执行任何类型的分析都需要我们从数据库中收集/查询必要的数据,所以选择正确的工具来查询数据变得至关重要。因此,我们无法想象自己使用SQL来处理如此大量的数据,因为每个查询的成本都很高。
使用PyMongo查询MongoDB使用PyMongo查询MongoDB数据库
这正是MongoDB的用武之地。MongoDB是一个非结构化数据库,以文档形式存储数据。此外,MongoDB能够非常高效地处理大量数据,并且是使用最广泛的NoSQL数据库,因为它提供了丰富的查询语言以及对数据的灵活而快速的访问。
在本文中,我们将看到有关如何使用PyMongo查询MongoDB数据库的多个示例。此外,我们将看到如何使用比较运算符和逻辑运算符,正则表达式以及聚合管道的基础知识。
本文是MongoDB初学者Python教程的延续,其中我们讨论了非结构化数据库,安装步骤和MongoDB基本操作的挑战。因此,如果您是MongoDB的完整入门者,我建议您先阅读该文章。
目录
什么是PyMongo?
安装步骤
将数据插入数据库
查询数据库
根据字段过滤
根据比较运算符进行过滤
基于逻辑运算符的过滤
常用表达
聚合管道
尾注
什么是PyMongo?
PyMongo是一个Python库,使我们能够与MongoDB连接。此外,这是与MongoDB和Python一起使用的最推荐方法。
另外,我们选择Python与MongoDB进行交互,因为它是数据科学中最常用且功能最强大的语言之一。PyMongo允许我们使用类似于字典的语法来检索数据。
如果您是Python的初学者,我建议您注册此免费课程:Python入门。
安装步骤
安装PyMongo非常简单明了。在这里,我假设您已经安装了Python 3和MongoDB。以下命令将帮助您安装PyMongo:
pip3安装pymongo
将数据插入数据库
现在,让我们在使用PyMongo查询MongoDB数据库之前进行设置。首先,我们将数据插入数据库。以下步骤将在此方面为您提供帮助-
导入库并连接到mongo客户端
在您的机器上启动MongoDB服务器。我假设它正在localhost:27017运行文件。
让我们从导入一些我们将要使用的库开始。默认情况下,MongoDB服务器在本地计算机上的端口27017上运行。然后,我们将使用pymongo库连接到MongoDB客户端。
然后获取数据库sample_db的数据库实例。万一它不存在,MongoDB将为您创建一个。
从JSON文件创建集合
我们将使用在多个城市运营的送餐公司的数据。此外,他们在这些城??市设有各种配送中心,用于将餐单发送给客户。您可以在此处下载数据和代码。
weekly_demand:
id:每个文档的唯一ID
周:周号
center_id:配送中心的唯一ID
meal_id:膳食的唯一ID
checkout_price:最终价格,包括折扣,税金和送货费
base_price:餐的基本价格
emailer_for_promotion:发送电子邮件以促进进餐
homepage_featured:首页提供的餐点
num_orders:(目标)订单数
餐信息:
餐_id:餐的唯一ID
类别:餐食类型(饮料/小吃/汤……)
美食:美食(印度/意大利/…)
然后,我们将在sample_db数据库中创建两个集合:
使用PyMongo查询MongoDB-每周需求收集
使用PyMongo查询MongoDB-膳食信息收集
将数据插入收藏夹
现在,我们拥有的数据为JSON格式。然后,我们将获得集合的实例,读取数据文件,并使用insert_many函数插入数据。
最后,在weekly_demand_collection中有456548个文档,在饭食信息集合中有51个文档。现在,让我们看一下每个集合中的一个文档。
weekly_demand_collection
使用PyMongo查询MongoDB-每周需求收集找到一个
膳食信息集
使用PyMongo查询MongoDB-膳食信息收集
现在,我们的数据已准备就绪。让我们继续查询该数据库。
查询数据库
我们可以使用PyMonfo和find函数查询MongoDB数据库,以获取所有满足给定条件的结果,还可以使用find_one函数,该函数仅返回满足条件的一个结果。
以下是find和find_one的语法:
your_collection.find({<<查询>>},{<<字段>>})
您可以使用以下过滤技术查询数据库-
根据字段过滤
例如,您有数百个字段,而您只想看到其中的几个。您可以通过将所有必填字段名称都设置为值1来实现此目的。例如,
使用PyMongo查询MongoDB-根据字段进行过滤
另一方面,如果只想从整个文档中丢弃一些字段,则可以将字段名称设置为等于0。因此,将仅排除那些字段。请注意,您不能使用1和0的组合来获取字段。全部要么为一,要么全部为零。
使用PyMongo查询MongoDB-根据字段进行过滤
过滤条件
现在,在本节中,我们将在第一个大括号中提供条件,并在第二个中删除字段。因此,它将返回center_id等于55且meal_id等于1885的第一个文档,并且还将丢弃字段_id和week。
使用PyMongo查询MongoDB-使用条件进行过滤
根据比较运算符进行过滤
以下是MongoDB中的9个比较运算符。
名称描述
$eq它将匹配等于指定值的值。
$gt它将匹配大于指定值的值。
$gte它将匹配所有大于或等于指定值的值。
$in它将匹配数组中指定的任何值。
$lt它将匹配所有小于指定值的值。
$lte它将匹配所有小于或等于指定值的值。
$ne它将匹配所有不等于指定值的值。
$nin它将不匹配数组中指定的任何值。
以下是使用这些比较运算符的一些示例-
等于和不等于
我们将找到center_id等于55且homepage_featured不等于0的所有文档。由于我们将使用find函数,因此它将返回该命令的游标。此外,使用for循环遍历查询结果。
等于不等于
在列表中而不在列表中
例如,您需要将一个元素与多个元素匹配。在这种情况下,我们可以使用$ in运算符,而不是多次使用$ eq运算符。我们将尝试找出center_id为24或11的所有文档。
在列表中,而不是在列表中
然后,我们找到所有在指定列表中不存在center_id的文档。以下查询将返回center_id不是24也不是11的所有文档。
在列表中而不在列表中
小于和大于
现在,让我们查找center_id为55且checkout_price大于100且小于200的所有文档。为此,请使用以下语法-
使用PyMongo查询MongoDB-小于和大于
基于逻辑运算符的过滤器
名称描述
$and它将查询语句与逻辑连接起来,AND并返回同时符合这两个条件的所有文档。
$not它将反转查询的效果并返回与查询表达式不匹配的文档。
$nor它将使用逻辑将查询子句连接起来,NOR并返回所有与子句不匹配的文档。
$or它将使用逻辑将查询子句连接起来,OR并返回匹配任一子句条件的所有文档。
以下示例说明了逻辑运算符的用法-
AND运算符
下面的查询将返回所有的文件,其中center_id等于11,也是meal_id不等于1778的子查询的和运营商将前来名单内。
使用PyMongo查询MongoDB-和运算符
或运算符
以下查询将返回center_id等于11或餐饭ID为1207或2707的所有文档。此外,or运算符的子查询将位于列表内。
使用PyMongo-或运算符查询MongoDB
用正则表达式过滤
当您有文本字段并且要搜索具有特定模式的文档时,正则表达式非常有用。如果您想了解有关正则表达式的更多信息,我强烈建议您阅读本文:Python正则表达式初学者教程。
它可以与运算符$ regex一起使用,并且我们可以为运算符提供值以使regex模式变为matc。我们将使用饭食信息集合进行此查询,然后将找到Cuisine字段以字符C开头的文档。
让我们再来看一个正则表达式的例子。我们会找到所有以“ S”开头,而以“ ian ”结尾的类别的所有文档。
聚合管道
MongoDB的聚合管道提供了一个框架,可以对数据集执行一系列数据转换。以下是其语法:
your_collection 。聚合( [  {  < stage1 >  }, {<stage2>},..  ]  )
第一个阶段将完整的文档集作为输入,然后每个随后的阶段都将前一个转换的结果集作为下一个阶段的输入并产生输出。
MongoDB汇总中大约有10种转换可用,在本文中我们将看到$ match和$ group。我们将在即将发表的MongoDB文章中详细讨论每个转换。
例如,在第一阶段,我们将匹配center_id等于11的文档,在下一阶段,它将对center_id等于11的文档数量进行计数。请注意,我们为$ count运算符分配了等于第二阶段的total_rows是我们想要在输出中使用的字段的名称。
现在,让我们再举一个例子,其中第一阶段与之前相同,即center_id等于11,而在第二阶段中,我们要为center_id 11计算字段num_orders的平均值,并为center_id 11计算唯一的food_ids。
题库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:mongodb mongo NGO Mon 数据库

沙发
passioneagle 发表于 2020-12-25 08:06:16 来自手机 |只看作者 |坛友微信交流群
时光永痕 发表于 2020-12-24 20:50
使用PyMongo查询MongoDB数据库!
随着互联网的全球普及,我们现在正在以前所未有的速度生成数据。因为执行 ...
{:2_31:}

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 01:36