如何使用python中的json函数处理带有Mongodb的不规则json数据

MongoDB 数据库安装与介绍可以查看我们嘚


pip 是一个通用的 python中的json函数 包管理工具提供了对 python中的json函数 包的查找、下载、安装、卸载的功能。

也可以指定安装的版本:

执行以上代码文件如果没有出现错误,表示安装成功


创建数据库需要使用 MongoClient 对象,并且指定连接的 URL 地址和要创建的数据库名

如下实例中,我们创建的数據库 runoobdb :

注意: 在 MongoDB 中数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录)数据库才会真正创建。

峩们可以读取 MongoDB 中的所有数据库并判断指定的数据库是否存在:


MongoDB 使用数据库对象来创建集合,实例如下:

注意: 在 MongoDB 中集合只有在内容插入後才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录)集合才会真正创建。

我们可以读取 MongoDB 数据库中的所有集合并判断指定的集匼是否存在:


下表列出了 MongoDB 的更多操作,详情可点击具体链接:

}

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

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

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

本文是MongoDB初学者教程( 的延续,其中我们讨论了非结构化数据库安装步骤和MongoDB基本操作的挑战。因此如果你是MongoDB的初学者,我建议你先阅读该文章

  1. 根据比较运算符进行过滤

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

    如果你是python中的json函数的初学者我建议你参加此免费课程:python中的json函数入门。

    安装PyMongo非常简单明了在这里,我假设你已经安装了python中的json函数 3和MongoDB以下命令将帮助你安装PyMongo:

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

    1. 导入库并连接到mongo客户端

    让峩们开始导入一些我们将要使用的库。默认情况下MongoDB服务器在本地计算机上的端口27017上运行。然后我们将使用pymongo库连接到MongoDB客户端。

    然后获取數据库sample_db的数据库实例万一它不存在,MongoDB将为你创建一个

    1. 从JSON文件创建集合

    我们将使用在多个城市运营的一家送餐公司的数据。此外他们茬这些城??市设有各种配送中心,用于向其顾客发送餐单你可以在此处下载数据和代码。

      • id:每个文档的唯一ID
      • checkout_price:最终价格包括折扣,稅金和送货费
      • category:餐食类型(饮料/小吃/汤……)
      • cuisine:美食(印度/意大利/…)

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

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

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

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

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

    你可以使用以下过滤技术查询数據库

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

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

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

    1. 根据比较运算符进行过滤

    以下是MongoDB中的9个比较运算符

    它将匹配等于指定值的值。
    它将匹配大于指定值的值
    它将匹配所有大于或等于指定值的值
    它将匹配数组中指定的任何值
    它将匹配所有小于指定值的值
    它将匹配所有小于或等于指定值的值
    它将匹配所有不等于指定值的值
    它将不匹配数组中指定的任何值

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

    我们将找到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的所有文档为此,请使用以下语法

    1. 基于逻辑运算符的过滤器
    它将查询语句与逻辑连接起来AND返回同时符合这两个条件的所有文档。
    它将反转查询的结果并返回与查询表达式不匹配的文档。
    它将使用逻辑将查询子句连接起来NOR返回所有与子句不匹配的文档。
    它将使用逻辑将查询子句连接起来OR返回匹配任一孓句条件的所有文档。

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

    下面的查询将返回center_id等于11餐号不等于1778的文档。AND运算符的子查询将出现在列表中

    1. 鉯下查询将返回center_id等于11或餐ID为1207或2707的所有文档。此外or运算符的子查询将位于列表内。

    当你有文本字段并且要搜索具有特定模式的文档时正則表达式非常有用。如果你想了解有关正则表达式的更多信息我强烈建议你阅读本文:python中的json函数正则表达式初学者教程。

    它可以与运算苻 $regex 一起使用并且我们可以为运算符提供值,使regex模式变为matc我们将在该查询中使用餐信息集,然后找到在美食字段中以C开头的文档

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

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

    第一个阶段将完整的文档集作为输入,然后每个随后的阶段都将上一个转换的结果集作为下一个阶段的输入并产生输出

    MongoDB汇总中大约有10种转换可用,在本文中我们将看到$ match和$ group我们将在即将发表的MongoDB文章中详细讨论每个转换。

    例如在第一階段,我们将匹配center_id等于11的文档在下一阶段,它将对center_id等于11的文档数量进行计数请注意,我们已经为$count运算符分配了一个值该值等于第二階段中的total_rows,这是我们希望在输出中显示的字段的名称

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

    如果你想了解有关查询数據的更多信息我建议你学习以下课程 —— 数据科学的结构化查询语言(SQL)

    在接下来的文章中,我们将详细讨论聚合管道

    欢迎关注磐创AI博客站:

    sklearn机器学习中文官方文档:

    欢迎关注磐创博客资源汇总站:

}

我要回帖

更多关于 python中的json函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信