Python操作MongoDB

本文详细介绍了在Python 3环境下如何使用PyMongo库连接MongoDB数据库,包括数据库的连接、指定数据库和集合、插入数据、查询数据、更新数据、删除数据等操作,以及排序、偏移和更新操作的高级用法。
摘要由CSDN通过智能技术生成

MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档、数组及文档数组,非常灵活。在这一节中,我们就来看看Python 3下MongoDB的存储操作。

1. 准备工作

在开始之前,请确保已经安装好了MongoDB并启动了其服务,并且安装好了Python的PyMongo库。

2. 连接MongoDB

连接MongoDB时,我们需要使用PyMongo库里面的MongoClient。一般来说,传入MongoDB的IP及端口即可,其中第一个参数为地址host,第二个参数为端口port(如果不给它传递参数,默认是27017):

  1. import pymongo  
  2. client = pymongo.MongoClient(host='localhost', port=27017) 

这样就可以创建MongoDB的连接对象了。

另外,MongoClient的第一个参数host还可以直接传入MongoDB的连接字符串,它以mongodb开头,例如:

  1. client = MongoClient('mongodb://localhost:27017/') 

这也可以达到同样的连接效果。

3. 指定数据库

MongoDB中可以建立多个数据库,接下来我们需要指定操作哪个数据库。这里我们以test数据库为例来说明,下一步需要在程序中指定要使用的数据库:

  1. db = client.test 

这里调用client的test属性即可返回test数据库。当然,我们也可以这样指定:

  1. db = client['test'] 

这两种方式是等价的。

4. 指定集合

MongoDB的每个数据库又包含许多集合(collection),它们类似于关系型数据库中的表。

下一步需要指定要操作的集合,这里指定一个集合名称为students。与指定数据库类似,指定集合也有两种方式:

  1. collection = db.students  
  2. collection = db['students'] 

这样我们便声明了一个Collection对象。

5. 插入数据

接下来,便可以插入数据了。对于students这个集合,新建一条学生数据,这条数据以字典形式表示:

  1. student = {  
  2.     'id': '20170101',  
  3.     'name': 'Jordan',  
  4.     'age': 20,  
  5.     'gender': 'male'  

这里指定了学生的学号、姓名、年龄和性别。接下来,直接调用collection的insert()方法即可插入数据,代码如下:

  1. result = collection.insert(student)  
  2. print(result) 

在MongoDB中,每条数据其实都有一个_id属性来唯一标识。如果没有显式指明该属性,MongoDB会自动产生一个ObjectId类型的_id属性。insert()方法会在执行后返回_id值。

运行结果如下:

  1. 5932a68615c2606814c91f3d 

当然,我们也可以同时插入多条数据,只需要以列表形式传递即可,示例如下:

  1. student1 = {  
  2.     'id': '20170101',  
  3.     'name': 'Jordan',  
  4.     'age': 20,  
  5.     'gender': 'male'  
  6. }  
  7.  
  8. student2 = {  
  9.     'id': '20170202',  
  10.     'name': 'Mike',  
  11.     'age': 21,  
  12.     'gender': 'male'  
  13. }  
  14.  
  15. result = collection.insert([student1, student2])  
  16. print(result) 

返回结果是对应的_id的集合:

  1. [ObjectId('5932a80115c2606a59e8a048'), ObjectId('5932a80115c2606a59e8a049')] 

实际上,在PyMongo 3.x版本中,官方已经不推荐使用insert()方法了。当然,继续使用也没有什么问题。官方推荐使用insert_one()和insert_many()方法来分别插入单条记录和多条记录,示例如下:

  1. student = {  
  2.     'id': '20170101',  
  3. <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值