"""
MongoDB是一个流行的NoSQL数据库,采用文档数据库模型,提供了丰富的功能和灵活的数据模型。
Python中的PyMongo驱动程序是与MongoDB交互的重要工具,提供了方便的API和功能。
"""
from pymongo import MongoClient
# 创建数据库
def create_database(client, database_name):
db_list = client.list_database_names() # 获取当前存在的数据库列表
print('当前数据库已存在的集合:', db_list)
mydb = client[database_name] # 创建数据库
if database_name in db_list:
print("该数据库已存在!")
else:
print('创建数据库成功!')
print('新建数据库名:', database_name)
# 创建集合
def create_collections(client, database_name, collection_name):
mydb = client.get_database(database_name) # 指定要操作的数据库
coll_list = mydb.list_collection_names() # 获取当前存在的集合
if collection_name in coll_list:
print("该集合已存在!")
else:
print('创建集合成功!')
print('新建集合名:', collection_name)
# 插入数据
def insert_data(client, database_name, collection_name):
mydb = client.get_database(database_name) # 指定要操作的数据库
mycoll = mydb.get_collection(collection_name) # 指定要操作的集合
data1 = {'it': "小学",
'name': '语文',
'price': 20,
'user': 'sxh',
'time': '2024-05-28'
}
data2 = {'it': "初中",
'name': '语文',
'price': 30,
'user': 'sxh',
'time': '2024-05-28'
}
data3 = {'it': "高中",
'name': '语文',
'price': 40,
'user': 'sxh',
'time': '2024-05-28'
}
data4 = {'it': "大学",
'name': '高等数学',
'price': 50,
'user': 'sxh',
'time': '2024-05-28'
}
mycoll.insert_many([data1, data2, data3, data4]) # 插入数据集data1,data2,data3,data4
print('数据插入成功!')
# 查询集合中的所有数据
def find_data(client, database_name, collection_name):
mydb = client.get_database(database_name) # 指定要操作的数据库
mycoll = mydb.get_collection(collection_name) # 指定要操作的集合
print('当前集合中所有数据:')
for data in mycoll.find(): # 遍历集合
print(data)
print('数据查询成功!')
# 修改集合中的一个数据
def updata_one(client, database_name, collection_name):
mydb = client.get_database(database_name) # 指定要操作的数据库
mycoll = mydb.get_collection(collection_name) # 指定要操作的集合
old_data = {'name': '高等数学'} # 指定要修改的数据集
new_data = {'$set': {'name': 'NoSQL数据库'}} # 修改的新数据集的信息
result = mycoll.update_one(old_data, new_data) # 把旧的数据集更新为新的数据集
print('修改数据成功!修改后数据:')
for data in mycoll.find(): # 遍历集合
print(data)
print('数据修改成功!')
# 修改集合中的多个数据
def updata_many(client, database_name, collection_name):
mydb = client.get_database(database_name) # 指定要操作的数据库
mycoll = mydb.get_collection(collection_name) # 指定要操作的集合
old_data = {'name': '语文'} # 指定要修改的数据集
new_data = {'$set': {'name': '数学'}} # 修改的新数据集的信息
result = mycoll.update_many(old_data, new_data) # 把旧的数据集更新为新的数据集
print('修改数据成功!修改后数据:')
for data in mycoll.find(): # 遍历集合
print(data)
print('修改成功!')
# 删除集合中的一个数据
def delete_one(client, database_name, collection_name):
mydb = client.get_database(database_name) # 指定要操作的数据库
mycoll = mydb.get_collection(collection_name) # 指定要操作的集合
result = mycoll.delete_one({'it': '初中'}) # 删除集合中第一个匹配项{'it': '初中'}
print('成功删除集合中的一个数据!删除后数据:')
for data in mycoll.find(): # 遍历集合
print(data)
# 删除集合中的多个数据
def delete_many(client, database_name, collection_name):
mydb = client.get_database(database_name) # 指定要操作的数据库
mycoll = mydb.get_collection(collection_name) # 指定要操作的集合
result = mycoll.delete_many({'name': '数学'}) # 删除集合中多个匹配项{'name': '数学'}
print('成功删除集合中的多个数据!删除后数据:')
for data in mycoll.find(): # 遍历集合
print(data)
# 删除指定集合
def drop_collections(client, database_name, collection_name):
mydb = client.get_database(database_name) # 指定要操作的数据库
mycoll = mydb.get_collection(collection_name) # 指定要操作的集合
mycoll.drop() # 删除集合
print('删除集合成功!')
if __name__ == "__main__":
mgclient = MongoClient("mongodb://localhost:27017/") # 连接到MongoDB数据库
create_database(mgclient, 'sxh14') # 创建数据库
create_collections(mgclient, 'sxh14', 'orders') # 创建集合
insert_data(mgclient, 'sxh14', 'orders') # 插入数据
find_data(mgclient, 'sxh14', 'orders') # 查询数据
updata_one(mgclient, 'sxh14', 'orders') # 更新集合中的一个数据
updata_many(mgclient, 'sxh14', 'orders') # 更新集合中的多个数据
delete_one(mgclient, 'sxh14', 'orders') # 删除集合中的一个数据
delete_many(mgclient, 'sxh14', 'orders') # 删除集合中的多个数据
drop_collections(mgclient, 'sxh14', 'orders') # 删除集合
程序运行输出结果:
【补充1】PyCharm Community Edition 2023.3.3编程界面截图:
【补充2】数据插入成功后,MongoDB数据库Compass可视化界面显示截图: