环境介绍
- Linux: Ubuntu 16.04 LTS
- mogodb3.6.23
题目一
-
在 MongoDB 数据库中创建一个名为 test 的数据库,然后在该数据库中创建一个名为 bbs 的集合,并向该集合中插入了10000个随机生成的文档。每次运行代码时,它会清除先前的文档并插入新的文档。
-
代码修改
注意: 最新版本的 PyMongo 已经不再支持 remove 方法。要删除文档,要使用 delete_many() 或 delete_one()
- 修改部分:
(1)删除旧文档:原来的代码中使用了 bbs.remove() 方法来删除文档,但在新版本的 pymongo 中,这个方法已经被弃用。将其替换为了 bbs.delete_many({}),这将删除集合中的所有文档。
(2)统计文档数量:原来的代码中使用了 bbs.count() 方法来统计文档数量,但在新版本中,推荐使用 count_documents({}) 方法来完成这个任务。
- 代码展示:
ffrom pymongo import MongoClient
from random import randint
name = [
'yangx',
'yxxx',
'laok',
'kkk',
'ji',
'gaoxiao',
'laoj',
'meimei',
'jj',
'manwang',
]
title = [
'123',
'321',
'12',
'21',
'aaa',
'bbb',
'ccc',
'sss',
'aaaa',
'cccc',
]
client = MongoClient('localhost', 27017)
db = client.test
bbs = db.bbs
bbs.delete_many({}) # 使用delete_many删除所有文档
for i in range(1, 10000):
na = name[randint(0, 9)]
ti = title[randint(0, 9)]
newcard = {
'author': na,
'title': ti,
}
bbs.insert_one(newcard)
print(bbs.count_documents({})) # 使用count_documents获取文档数量
-
运行成功会输出9999
-
代码详细解释
5.1 导入模块:
from pymongo import MongoClient
from random import randint
这里导入了 MongoClient 类以连接 MongoDB 数据库,以及 randint 函数用于生成随机数。
5.2 定义数据:
name = [
'yangx', 'yxxx', 'laok', 'kkk', 'ji',
'gaoxiao', 'laoj', 'meimei', 'jj', 'manwang',
]
title = [
'123', '321', '12', '21', 'aaa',
'bbb', 'ccc', 'sss', 'aaaa', 'cccc',
]
这里定义了两个列表,分别是 name 和 title,用于生成随机的作者名字和标题。
5.3 连接到 MongoDB:
client = MongoClient('localhost', 27017)
使用 MongoClient 连接到 MongoDB 数据库。这里连接到了本地的 MongoDB 服务器,端口号是 27017。
5.4 选择数据库和集合:
db = client.test
bbs = db.bbs
选择要使用的数据库是 “test”,然后选择要操作的集合是 “bbs”。
5.5 删除旧文档:
bbs.delete_many({})
这行代码删除了集合 "bbs" 中的所有文档。
插入新文档:
for i in range(1, 10000):
na = name[randint(0, 9)]
ti = title[randint(0, 9)]
newcard = {
'author': na,
'title': ti,
}
bbs.insert_one(newcard)
这个循环插入了 10000 个新的文档,每个文档包含了一个随机选择的作者名字和标题,并将其插入到集合 “bbs” 中。
5.6 获取文档数量:
print(bbs.count_documents({}))
题目二
- 在 mongodb shell 终端查询
- 进入终端
mongo
- 查看数据库
show dbs
- 进入’student’数据库
use test
- 查看数据库 smessage 集合
db.bbs.findOne()
- 其余命令
(1)查询每条记录的作者。
db.bbs.aggregate({"$project":{"author":1}})
(2)用group将作者名称分组。
db.bbs.aggregate({"$group":{"_id":"$author","count":{"$sum":1}}})
(3)在题目2的基础上进行排序。
db.bbs.aggregate({"$group":{"_id":"$author","count":{"$sum":1}}},{"$sort":{"count":-1}})
(4)在3的基础上限制输出结果为5个
db.bbs.aggregate({"$group":{"_id":"$author","count":{"$sum":1}}},{"$sort":{"count":-1}},{"$limit":5})
实验跳转链接
实验九 python操作mongodb2
实验十 mongodb 聚合函数mapreduce代码学习
实验八 python操作mongodb1
安装mongodb3.6
mongodb基本的增删改
MongoDB 查询操作文档
MongoDB Map-Reduce 操作文档