目录
0 环境
OS:Windows10
MongoDB:MongoDB-3.4.4
网盘链接:https://pan.baidu.com/s/1tPUBNjlwqSdhCS89LpS6pQ
提取码:cwhk
可视化界面:mongodb-compass-1.28.4-win32-x64
网盘链接:https://pan.baidu.com/s/1GZA1Y66GnhtitF2OLzFkig
提取码:jz89
(以上软件均可从MongoDB官网免费下载使用)
Python:3.8
pymongo:3.4.0
1 要求
- 编写python程序,操作MongoDB数据库,连接27017端口的MongoDB,创建数据库student,在数据库中建立姓名缩写_info
表,并在表中插入100条文档
2 步骤
2.1 环境准备,下载第三方库pymongo-3.4.0
2.2 创建.py文件,文件命名为:wjw_pyinsertData.py
2.3 编写程序,实现在student数据库中的wjw_info集合中插入100条指定格式的文档
import pymongo
from pymongo import MongoClient
import random
from random import randint
# 连接MongoDB数据库
client = MongoClient('mongodb://localhost:27017/')
# 指定连接的数据库
db = client.student
# 指定集合
collection = db.wjw_info
# 随机生成100条指定格式的文档
# {
# "name": name,
# "age": age,
# "province": province,
# "subject": [
# {"name": "chinese", "score": score},
# {"name": "math", "score": score},
# {"name": "english", "score": score},
# {"name": "chemic", "score": score},
# ]}
# 姓列表
familyNameList = ["zhou ", "wu ", "zheng "]
# 名列表
nameList = ["chao", "hao", "gao", "qi gao", "hao hao", "gao gao", "chao hao", "ji gao", "ji hao", "li gao", "li hao"]
# 省份列表
provinceList = ["guang dong", "guang xi", "shan dong", "shan xi", "he nan"]
# 插入随机生成的100条文档
for i in range(100):
# 随机生成文档
stu = {
"name": familyNameList[random.randint(0, 2)] + nameList[random.randint(0, 10)],
"age": random.randint(1, 30),
"province": provinceList[random.randint(0, 4)],
"subject": [
{"name": "chinese", "score": random.randint(0, 100)},
{"name": "math", "score": random.randint(0, 100)},
{"name": "english", "score": random.randint(0, 100)},
{"name": "chemic", "score": random.randint(0, 100)},
]}
# 打印生成的文档
print(stu)
# 将生成的文档插入集合中,生成一条插入一条
result_id = collection.insert_one(stu)
print(result_id)
print("100条文档已全部插入完成!")
2.4 执行程序,查看执行结果
然后在图形化界面也可以看到成功插入
2.5 在MongoDB Shell中查看插入的结果
2.6 在mongodb shell终端查询
(1)查询province为guang dong的学生的平均年龄
(注:此查询需用到聚合算子aggregate
及管道,$match
算子是用来过滤文档的,$group
算子是用来返回计算结果字段,$avg
算子是用来计算某一字段的平均值。)
db.wjw_info.aggregate([
{$match:{"province":"guang dong"}},
{$group:{_id:"$province",avg_age:{$avg:"$age"}}}
])
(2)查询所有省份的平均年龄
db.wjw_info.aggregate([{$group:{_id:null,avg_age:{$avg:"$age"}}}])
总结:本文介绍了如何使用Python来操作MongoDB数据库,创建数据库和集合,并向其插入100条随机生成的文档!
- 编写python程序,操作MongoDB数据库,连接27017端口的MongoDB,创建数据库student,在数据库中建立姓名缩写_info
表,并在表中插入100条文档
之前写的MongoDB数据库的有关博客:
后续会继续更新有关MongoDB数据库的内容!
(注:第26次发文,如有错误和疑问,欢迎在评论区指出!)
——2021.12.13