总览

  • 我们将讨论如何使用PyMongo库查询MongoDB数据库。
  • 我们将介绍MongoDB中的基本聚合操作。

介绍

随着互联网的全球普及,我们现在正在以前所未有的速度生成数据。因为执行任何类型的分析都需要我们从数据库中收集/查询必要的数据,所以选择正确的工具来查询数据变得至关重要。因此,我们无法想象使用SQL来处理如此大量的数据,因为每个查询的成本都很高。

使用PyMongo查询MongoDB数据库

这正是MongoDB的用武之地。MongoDB是一个非结构化数据库,以文档形式存储数据。此外,MongoDB能够非常高效地处理大量数据,并且是使用最广泛的NoSQL数据库,因为它提供了丰富的查询语言以及对数据的灵活,快速访问。

在本文中,我们将看到有关如何使用PyMongo查询MongoDB数据库的多个示例。此外,我们将看到如何使用比较运算符和逻辑运算符,正则表达式以及聚合管道的基础知识。

其中我们讨论了非结构化数据库,安装步骤和MongoDB基本操作的挑战。因此,如果您是MongoDB的完整入门者,我建议您先阅读该文章。

目录

  1. 什么是PyMongo?
  2. 安装步骤
  3. 将数据插入数据库
  4. 查询数据库
    1. 根据字段过滤
    2. 根据比较运算符进行过滤
    3. 基于逻辑运算符的过滤
    4. 常用表达
    5. 聚合管道

5.尾注

什么是PyMongo?

PyMongo是一个Python库,使我们能够与MongoDB连接。此外,这是与MongoDB和Python一起使用的最推荐方法。

另外,我们选择Python与MongoDB进行交互,因为它是数据分析忠最常用且功能最强大的语言之一。PyMongo允许我们使用类似于字典的语法来检索数据。

安装步骤

安装PyMongo非常简单明了。在这里,我假设您已经安装了Python 3和MongoDB。以下命令将帮助您安装PyMongo:

将数据插入数据库

现在让我们进行设置,然后再使用PyMongo查询MongoDB数据库。首先,我们将数据插入数据库。以下步骤将在此方面为您提供帮助-

  1. 导入库并连接到mongo客户端
    在计算机上启动MongoDB服务器。我假设它正在localhost:27017运行文件。
    让我们从导入一些我们将要使用的库开始。默认情况下,MongoDB服务器在本地计算机上的端口27017上运行。然后,我们将使用pymongo库连接到MongoDB客户端。
    然后获取数据库sample_db的数据库实例。万一它不存在,MongoDB将为您创建一个。

从JSON文件创建集合

我们将使用在多个城市运营的一家送餐公司的数据。此外,他们在这些城​​市设有各种配送中心,用于向其顾客发送餐单。

  1. weekly_demand
  • id:每个文档的唯一ID
  • :周号
  • center_id配送中心的唯一ID
  • meal_id:膳食的唯一ID
  • checkout_price:最终价格,包括折扣,税金和送货费
  • base_price:餐的基本价格
  • emailer_for_promotion:发送电子邮件以促进进餐
  • homepage_featured首页提供的餐点
  • num_orders:(目标)订单数

2.餐信息:

  • 餐_id:餐的唯一ID
  • 类别:餐食类型(饮料/小吃/汤……)
  • 美食:美食(印度/意大利/…)

然后,我们将在sample_db数据库中创建两个集合:

3.将数据插入收藏夹

现在,我们拥有的数据为JSON格式。然后,我们将获得集合的实例,读取数据文件,并使用insert_many函数插入数据。

最后,在weekly_demand_collection中有456548个文档,在饭食信息集合中有51个文档。现在,让我们看一下每个集合中的一个文档。

weekly_demand_collection

膳食信息集

现在,我们的数据已准备就绪。让我们继续查询该数据库。

查询数据库

我们可以使用带有查找功能的PyMonfo查询MongoDB数据库,以获取满足给定条件的所有结果,还可以使用find_one函数,该函数将仅返回满足条件的一个结果。

以下是find和find_one的语法:

your_collection.find({<<查询>>},{<<字段>>})

您可以使用以下过滤技术查询数据库-

  1. 根据字段过滤
    例如,您有数百个字段,而您只想看到其中的几个。您可以通过将所有必填字段名称都设置为值1来实现此目的。例如,

另一方面,如果只想从整个文档中丢弃一些字段,则可以将字段名称设置为等于0。因此,将仅排除那些字段。请注意,您不能使用1和0的组合来获取字段。全部要么为一,要么全部为零。

2.过滤条件
现在,在本节中,我们将在第一个大括号中提供一个条件,并在第二个中删除该字段。因此,它将返回center_id等于55且meal_id等于1885的第一个文档,并且还将丢弃字段_id和week。

3.根据比较运算符进行过滤
以下是MongoDB中的9个比较运算符。

以下是使用这些比较运算符的一些示例-

  1. 等于和不等于
    我们将找到center_id等于55且homepage_featured不等于0的所有文档。由于我们将使用find函数,因此它将返回该命令的游标。此外,使用for循环遍历查询结果。

2.在列表中而不在列表中

例如,您需要将一个元素与多个元素匹配。在这种情况下,我们可以使用$ in运算符,而不是多次使用$ eq运算符。我们将尝试找出center_id为24或11的所有文档。

然后,我们找到所有在指定列表中不存在center_id的文档。以下查询将返回center_id不是24也不是11的所有文档。

3.小于和大于
现在,让我们查找center_id为55且checkout_price大于100且小于200的所有文档。为此,请使用以下语法-

4.基于逻辑运算符的过滤器

以下示例说明了逻辑运算符的用法-

  1. AND运算符
    下面的查询将返回所有的文件,其中center_id等于11,也是meal_id不等于1778的子查询的运营商将前来名单内。

2.或运算符
以下查询将返回所有文件,其中center_id等于11或meal_id为1207或2707。此外,or运算符的子查询将位于列表内。

5.用正则表达式过滤
当您有文本字段并且要搜索具有特定模式的文档时,正则表达式非常有用。
它可以与运算符$ regex一起使用,并且我们可以为运算符提供值,以使regex模式变为matc。我们将使用饭食信息集合进行此查询,然后将找到Cuisine字段以字符C开头的文档。

让我们再来看一个正则表达式的例子。我们将查找所有以“ S”开头且以“ ian ” 结尾的类别的所有文档。

6.聚合管道
MongoDB的聚合管道提供了一个框架,可以对数据集执行一系列数据转换。以下是其语法:

第一个阶段将完整的文档集作为输入,然后每个随后的阶段都将上一个转换的结果集作为下一个阶段的输入并产生输出。
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。

尾注

如今生成的数据量之大令人难以置信,因此有必要找到更好的替代方法来查询数据。总而言之,在本文中,我们学习了如何使用PyMongo查询MongoDB数据库。此外,我们了解了如何根据所需情况应用各种过滤器。

我鼓励您自己尝试,并在评论部分分享您的经验。此外,如果您遇到以上任何概念的问题,请随时在下面的评论中问我。

mongo go 查询指定字段_使用PyMongo查询MongoDB数据库!相关推荐

  1. pymongo查询列表元素_使用PyMongo查询MongoDB数据库!

    作者|LAKSHAY ARORA 编译|Flin 来源|analyticsvidhya 介绍 随着互联网的普及,我们现在正以前所未有的速度生成数据.因为执行任何类型的分析都需要我们从数据库中收集/查询 ...

  2. lambdaquerywrapper查询指定字段_MongoDB系列 | 高级查询与索引(四)

    1 . 覆盖索引查询 ​所有的查询字段都是索引的一部分:所有的查询返回字段在同一个索引中. 由于索引存在于 RAM 中,因而从索引中获取数据要比扫描文档更快. 范例: 创建如下 users 集合(使用 ...

  3. Hibernate hql 查询指定字段并获取结果集

    Hibernate hql 查询指定字段并获取结果集 在hibernate中,用hql语句查询实体类,采用list方法的返回结果为一个List,该List中封装的对象分为以下三种情况: 1.查询全部字 ...

  4. Mybatis-plus 查询指定字段 select

    Mybatis-plus 查询指定字段 select 表结构 CREATE TABLE `user` (`id` bigint(20) NOT NULL COMMENT '主键',`name` var ...

  5. jango model.obejcts.filter 查询指定字段

    django model.obejcts.filter() 查询指定字段 model.obejcts.filter(key=value).values('field_name') 返回: [{'fie ...

  6. NodeJS 中的mongoDB设置指定字段的隐藏,查询的时候强制显示指定隐藏的字段

    NodeJS 中的mongoDB设置指定字段的隐藏,查询的时候强制显示指定隐藏的字段 这里使用的是基于RESTful API的规范创建的请求地址 在Schema创建用户的时候可以使用select:fa ...

  7. SpringBoot使用JPA多表关联动态查询指定字段

    SpringBoot使用JPA多表关联动态查询指定字段 目标需求 Maven依赖 项目结构 代码 运行结果 源码下载 目标需求 在SpringBoot中用JPA实现多表关联动态查询,并且只查询指定字段 ...

  8. 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段...

    mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段 先看一下 怎么实现动态的自定义字段查询: 例如: 而field 就是数据表中的某一个字段 String f ...

  9. localhost 已拒绝连接_【Python】MongoDB数据库的连接和操作

    安装 Python 要连接 MongoDB 需要 MongoDB 驱动. pip安装: python3 -m pip3 install pymongo 创建数据库 import pymongo myc ...

最新文章

  1. 鼠标跟随flash代码_FLASH如何制作密码锁功能(AS3)
  2. 关于《大道至简》第一章的收获
  3. 破坏双亲委派机制的那些事
  4. Qt 设置窗体或控件渐变消失
  5. 修改MyEclipse/Eclipse左侧文字大小(MacOS/Windows)
  6. 路由代码WebApi设置namespace路由参数
  7. springMVC视频教程
  8. DIY斑竹管理初稿的确定
  9. JS判断页面是否出现滚动条
  10. Atitit 字符串转换数组main参数解析 args splitByWholeSeparator String string= -host 101.1 8*124 -db 1
  11. 微信小程序 #项目笔记# | 从0到1实现婚礼邀请函小程序
  12. Windows提权实战——————1、IIS6.exe提权实战
  13. PHP文件需要反编译吗,php dezender批量反编译php加密文件
  14. vmware 安装 mac os 修改序列号
  15. html常见基础标签大汇总
  16. opengl 3D平衡球小游戏
  17. 360视频简介及ERP投影
  18. 根据订单id查询该订单和商品信息
  19. JVM(6)之 二次标记
  20. 【工具使用系列】关于 MATLAB Simulink 物理建模,你需要知道的事

热门文章

  1. [原] Android中Scroller类的分析
  2. POJ 1716 Integer Intervals
  3. 转换onnx_模型转换工具X2Paddle操作大全
  4. django pdf转html5,python – 在Django站点中将HTML转换为PDF
  5. ajax 最大链接数_[LeetCode] 479. 最大回文数乘积
  6. python一个函数可以有参数也可以没有参数_Python:有和没有关键字参数的lambda函数行为?...
  7. 黑马博客——详细步骤(三)项目功能的实现之新增用户
  8. 滴滴公司多次被下架的原因是什么,深挖测试员究竟还该不该去滴滴?
  9. 关于 Appium 各种版本的安装,都在这里
  10. “我升职的原因是:比同事更早学会这个知识”