# 安装

  pip install pymongo

# 操作数据库

# 创建连接

pymongo.mongo_client.MongoClient(host='localhost', port=27017, document_class=dict, tz_aware=False, connect=True, **kwargs)
其中 tz_aware 为 False 返回 naïve 的 datetime 实例,为 True 返回带有 timeinfo
的 datetime 实例,默认是 False
两种连接方式,一种使用构建对象方式,一种使用 uri 方式连接。

下面的代码是本地连接方式

from pymongo import MongoClient
client = MongoClient(host='localhost', port=27017)  # 建立客户端对象
# 选择一个数据库,名称为 python,没有则新建
db = client['python']
# 选择一个集合,名称为 std,没有则新建
col = db['stu']
col.insert_one({'a': 'b'})
for i in col.find():
    print(i)

如果反复运行上面的程序,则会进行反复插入,插入的每条文档的_id 字段是不同的。如下:

# 创建数据库

from pymongo import MongoClient
from pymongo.database import Database
client = MongoClient(host='localhost', port=27017, tz_aware=True)  # 建立客户端对象
# 方式一
db = client.get_database("python")
# 方式二
db = client["python"]
# 删除数据库
client.drop_database('python')
# 打印所有数据库的名称
for db_name in client.list_database_names():
    print(db_name)

# 操作集合

from pymongo import MongoClient
client = MongoClient(host='localhost', port=27017, tz_aware=True)  # 建立客户端对象
db = client.get_database("shsxt")
# 创建一个集合,如果存在就会报错,所以不推荐此种方式
# db.create_collection("collection3")
# 获取集合,如果没有会自动创建集合
collection = db.get_collection("user2")
# 获取集合,如果没有会自动创建集合
collection = db['user2']
# 获取集合名称,返回 list
collection_names = db.list_collection_names()	
for name in collection_names:
    print('集合名称:', name)
# 删除集合,返回字典,即使该集合不存在也不会报错
print(db.drop_collection('col'))

# 操作索引

尚未清楚索引的作用

创建唯一索引时报错了

import pymongo
from pymongo import MongoClient
client = MongoClient(host='localhost', port=27017, tz_aware=True)  # 建立客户端对象
collection = client.get_database('shsxt').get_collection('user2')
# 创建升序索引
r = collection.create_index([('name', pymongo.ASCENDING)])
print(r)
# 创建降序索引
r = collection.create_index([('age', pymongo.DESCENDING)])
print(r)
# 创建混合索引
r = collection.create_index([('name', pymongo.ASCENDING), ('status', pymongo.DESCENDING)])
print(r)