学科分类
目录

pymongo常用对象

pymongo模块中提供了4个对象与MongoDB数据库进行交互,分别是MongoClient对象、DataBase对象、Collection对象和Cursor对象。

1. MongoClient对象

MongoClient对象用于建立与MongoDB数据库的连接,它可以使用如下构造方法进行创建:

MongoClient(host='localhost', port=27017, document_class=dict, tz_aware=False, connect=True, **kwargs)

以上方法中常用参数的含义如下:

  • host,表示主机地址,默认为localhost。

  • port,表示连接的端口号,默认为27017。

  • document_class,表示数据库执行查询操作后返回文档的类型,默认为dict。

建立连接到MongoDB数据库,示例如下:

client = MongoClient()

上述示例创建MongoClient对象时没有传入任何参数,说明建立连接到默认主机地址和端口的MongoDB数据库。

也可以显式地指定主机地址和端口号,示例如下:

client = MongoClient('localhost', 27017)

还可以使用MongoDB的URL路径形式传入参数,示例如下。

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

2. DataBase对象

DataBase对象表示一个数据库,可以通过MongoClient对象进行获取。通过上文创建的MongoClient对象client获取数据库,示例如下:

data_base = client.db_name

此外,还可以采用访问字典值的形式获取数据库:

data_base = client['db_name']

需要注意的是,使用以上两种方式获取数据库时,若指定的数据库db_name已经存在,直接访问db_name数据库,否则创建一个数据库db_name。

3. Collection对象

Collection对象包含一组文档,代表MongoDB数据库中的集合,类似于关系数据库中的表,但它没有固定的结构。创建Collection对象的方式与创建数据库的方式类似,例如,通过 data_base创建集合test_collection,代码如下:

collection = db.test_collection

也可以采用访问字典值的形式创建Collection对象:

collection = db['test-collection']

Collection对象具备一系列操作文档的方法,这些方法的说明如表1所示。

表1 Collection对象常用方法

方法 说明
insert_one() 向集合中插入一条文档
insert_many() 向集合中插入多条文档
find_one() 查询集合中的一条文档。若找到匹配的文档,返回单个文档,否则返回None
find() 查询集合中的多条文档。若找到匹配项,则返回一个Cursor对象
update_one() 更新集合中的一条文档
update_many() 更新集合中的多条文档
delete_one() 从集合中删除一条文档
delete_many() 从集合中删除多条文档
count_documents(filter) 根据匹配条件filter统计集合中的文档数量。若传入空字典,则返回所有文档的数量;若传入带有键值对的字典,则返回符合条件的文档数量

值得一提的是,pymongo中使用字典来表示MongoDB数据库的文档,每个文档中都有一个_ id属性,用于保证文档的唯一性,当它们插入到集合中时若未提供_ id,会被MongoDB自动设置独特的_id值。

4. Cursor对象

Cursor对象是通过Collection对象调用find()方法返回的查询对象,该对象中包含有多条匹配的文档,可结合for循环遍历取出每条文档。例如,使用insert_many()方法向collection中插入多条文档,之后使用find()方法查询匹配的文档,代码如下:

collection.insert_many([{'x': i} for i in range(2)])
cursor_obj = collection.find({'x': 1})
for document in cursor_obj:
  print(document)
点击此处
隐藏目录