编辑
2020-05-07
后端技术
00
请注意,本文编写于 1460 天前,最后修改于 655 天前,其中某些信息可能已经过时。

目录

准备工作
连接MongoDB
指定数据库
指定集合
插入数据
查询

主要参考(抄袭)自:Python操作MongoDB看这一篇就够了

准备工作

你需要有个安装了MongoDB的服务器或者本地主机,另外请pip install pymongo一下。如果你不会装,请看我写的MongoDB的基本概念、安装及用户权限配置

连接MongoDB

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

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

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

另外,MongoClient的第一个参数host还可以直接传入MongoDB的连接字符串,它以mongodb开头,可以用它来指定密码账户等方式,例如:

python
client = MongoClient('mongodb://user:pwd@localhost:27017/')

关于连接的更多姿势,请看官方的连接字符串

指定数据库

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

python
db = client.test

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

python
db = client['test']

这两种方式是等价的。

指定集合

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

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

python
collection = db.students #或者 collection = db['students']

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

插入数据

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

python
student = { 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male' }

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

python
result = collection.insert(student) print(result)

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

运行结果如下:

bash
5932a68615c2606814c91f3d

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

python
student1 = { 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male' } student2 = { 'id': '20170202', 'name': 'Mike', 'age': 21, 'gender': 'male' } result = collection.insert([student1, student2]) print(result)

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

python
[ObjectId('5932a80115c2606a59e8a048'), ObjectId('5932a80115c2606a59e8a049')]

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

python
student = { 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male' } result = collection.insert_one(student) print(result) print(result.inserted_id)

运行结果如下:

python
<pymongo.results.InsertOneResult object at 0x10d68b558> 5932ab0f15c2606f0c1cf6c5

insert()方法不同,这次返回的是InsertOneResult对象,我们可以调用其inserted_id属性获取_id

对于insert_many()方法,我们可以将数据以列表形式传递,示例如下:

python
student1 = { 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male' } student2 = { 'id': '20170202', 'name': 'Mike', 'age': 21, 'gender': 'male' } result = collection.insert_many([student1, student2]) print(result) print(result.inserted_ids)

运行结果如下:

python
<pymongo.results.InsertManyResult object at 0x101dea558> [ObjectId('5932abf415c2607083d3b2ac'), ObjectId('5932abf415c2607083d3b2ad')]

该方法返回的类型是InsertManyResult,调用inserted_ids属性可以获取插入数据的_id列表

查询

。。。写不动了 慢慢来

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:mereith

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!