前言:
今天朋友们对“python数据导入mongodb”可能比较关心,姐妹们都想要学习一些“python数据导入mongodb”的相关内容。那么小编也在网摘上收集了一些对于“python数据导入mongodb””的相关内容,希望小伙伴们能喜欢,兄弟们一起来了解一下吧!各位同学,大家好。前面课程教大家使用Python、Nodejs连接MySQL数据库,本次课程教大家使用Python、Nodejs连接MongoDB数据库,并进行常见的数据操作。
01 MongoDB数据库基本操作介绍
NoSQL数据库介绍
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。
NoSQL数据库分类
键值(Key-Value)存储数据库
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果数据库管理员(DBA)只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。
列存储数据库
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak。
文档型数据库
文档型数据库是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。如:CouchDB, MongoDB。国内也有文档型数据库SequoiaDB,已经开源。
图形(Graph)数据库
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph。
MongoDB数据库介绍
MongoDB 是免费开源的跨平台 NoSQL 数据库,命名源于英文单词 humongous,意思是“巨大无比”,可见开发组对 MongoDB 的定位。与关系型数据库不同,MongoDB 的数据以类似于 JSON 格式的二进制文档存储:
MongoDB 高性能,高可用性、可扩展性等特点,使其至 2009 年发布以来,逐渐被认可,并被越来越多的用于生产环境中。
MongoDB 的存储结构只是名称上区别于传统的关系型数据库,实际上类似mysql的结构化存储。主要由如下三个单元组成:
文档(Document) :MongoDB 中最基本的单元,由 BSON 键值对(key-value)组成,类似于关系型数据库中的行(Row)。
集合(Collection) :一个集合可以包含多个文档,类似于关系型数据库中的表(Table)。
数据库(Database) :一个数据库中可以包含多个集合,可以在 MongoDB 中创建多个数据库,类似于关系型数据库中的数据库(Database)。
也就是说,MongoDB 将数据记录存储为文档 (更具体来说是BSON 文档),这些文档在集合中聚集在一起,数据库中存储一个或多个文档集合。
SQL 与 MongoDB 常见术语对比是这样的 :
MongoDB数据库的增删改查
创建(Create)
MongoDB 提供 insert 方法创建新文档:
db.collection.inserOne() 插入单个文档
db.collection.inserMany() 插入多个文档
db.collection.insert() 插入单条或多条文档
这里以 insert 方法为例:
查找(Read)
MongoDB 提供 find 方法查找文档,第一个参数为查询条件:
db.drivers.find() #查找所有文档
db.drivers.find({name: "Xiaose"}) #查找 name 为 Xiaose 的文档
db.drivers.find({age:{$gt:20}}) #查找 age 大于 20 的文档
更新(Update)
MongoDB 提供 updata 方法更新文档:
db.collection.updateOne() 更新最多一个符合条件的文档
db.collection.updateMany() 更新所有符合条件的文档
db.collection.replaceOne() 替代最多一个符合条件的文档
db.collection.update() 默认更新一个文档,可配置 multi 参数,跟新多个文档
下面的命令将 name 字段为 Chen 的文档,更新 age 字段为 30:
删除(Delete)
MongoDB 提供了 delete 方法删除文档:
db.collection.deleteOne() #删除最多一个符合条件的文档
db.collection.deleteMany() #删除所有符合条件的文档
db.collection.remove() #删除一个或多个文档
以 remove 方法为例:
MongoDB 提供了 drop 方法删除集合,返回 true 表面删除集合成功:
db.drivers.drop()
02 数据库可视化连接工具介绍
MongoDB Compass 是MongoDB可视化数据库管理系统软件。将数据库信息用图形化的界面展示出来,它能以视觉化的方式探索数据、在数秒内运行即时查询、创建数据库及管理集合和文档、与数据交换实现 CRUD 功能、查看和优化查询性能、构建地理查询等。让你能在索引、文档验证等方面作出更合理的决策。
MongoDB Compass的四大功能:
数据导入:支持将数据从CSV或JSON文件导入MongoDB数据库。
数据查询:编写临时查询以筛选数据。探索你的系列中的趋势和共性。
聚合管道创建:编写聚合管道,使集合或视图中的文档能够通过多个阶段,在这些阶段中,文档被处理成一组聚合结果。
操作命令运行:使用Compass中的嵌入式MongoDB Shell在交互式JavaScript环境中控制您的数据。
03 Python操作数据库
Python 作为一种功能强大的编程语言,拥有丰富的库和工具,能够方便地与 MongoDB 进行交互。
连接数据库
Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接,我们可以使用以下命令来安装。
创建数据库需要使用 MongoClient 对象,并且指定连接的 URL 地址和要创建的数据库名。如下实例中,我们创建的数据库 testdb :
在 MongoDB 中,数据库只有在内容插入后才会创建,就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。
创建集合
MongoDB 中的集合类似 SQL 的表,MongoDB 使用数据库对象来创建集合,实例如下:
在 MongoDB 中,集合只有在内容插入后才会创建,就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
Python Mongodb 插入文档
MongoDB 中的一个文档类似 SQL 表中的一条记录。
集合中插入文档使用 insert_one() 方法,该方法的第一参数是字典 name, value 对。
以下实例向 sites 集合中插入文档:
Python Mongodb 查询文档
MongoDB 中使用了 find 和 find_one 方法来查询集合中的数据,它类似于 SQL 中的 SELECT 语句。
1、查询一条数据
我们可以使用 find_one() 方法来查询集合中的一条数据。
查询 sites 文档中的第一条数据:
2.查询集合中所有数据
find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。
以下实例查找 sites 集合中的所有数据:
Python Mongodb 修改文档
我们可以在 MongoDB 中使用 update_one() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。如果查找到的匹配数据多于一条,则只会修改第一条。
以下实例将 alexa 字段的值 1000 改为 1234:
Python Mongodb 删除数据
1、删除单个文档
我们可以使用 delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。
以下实例删除 name 字段值为 "baidu" 的文档:
2、删除多个文档
我们可以使用 delete_many() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。
删除所有 name 字段中以 F 开头的文档:
04 Nodejs操作数据库
连接数据库
在Nodejs中,你可以使用mongodb官方驱动程序来连接和操作MongoDB数据库。可以使用npm安装它:
安装完成后,我们在Nodejs的代码中,就可以连接MongoDB数据库。比如下面的代码:
插入文档
要插入一个文档,我们需要先选择要插入的集合,然后使用 insertOne 或 insertMany 方法来插入文档。
以下是一个插入单个文档的示例:
查询文档
要查询文档,我们可以使用 find 方法,并传递一个查询条件。
以下是一个查询文档的示例:
更新文档
要更新文档,我们可以使用 updateOne 或 updateMany 方法,并传递一个更新条件和要进行的更新操作。
以下是一个更新文档的示例:
删除文档
要删除文档,我们可以使用 deleteOne 或 deleteMany 方法,并传递一个删除条件。
以下是一个删除文档的示例:
05 实例讲解
接下来,我们给大家进行实例的讲解。
未完待续。
我是源动君,带领大家一起进步,谢谢观看。
标签: #python数据导入mongodb