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)