实验九 python操作mongodb2

环境介绍

  • Linux: Ubuntu 16.04 LTS
  • mogodb3.6.23

题目一

  1. 在 MongoDB 数据库中创建一个名为 test 的数据库,然后在该数据库中创建一个名为 bbs 的集合,并向该集合中插入了10000个随机生成的文档。每次运行代码时,它会清除先前的文档并插入新的文档。

  2. 代码修改

注意: 最新版本的 PyMongo 已经不再支持 remove 方法。要删除文档,要使用 delete_many() 或 delete_one()

  • 修改部分:
    (1)删除旧文档:原来的代码中使用了 bbs.remove() 方法来删除文档,但在新版本的 pymongo 中,这个方法已经被弃用。将其替换为了 bbs.delete_many({}),这将删除集合中的所有文档。
    (2)统计文档数量:原来的代码中使用了 bbs.count() 方法来统计文档数量,但在新版本中,推荐使用 count_documents({}) 方法来完成这个任务。
  1. 代码展示:
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获取文档数量
  1. 运行成功会输出9999

  2. 代码详细解释
    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({}))

题目二

  1. 在 mongodb shell 终端查询
  2. 进入终端
mongo
  1. 查看数据库
show dbs
  1. 进入’student’数据库
use test
  1. 查看数据库 smessage 集合
db.bbs.findOne()
  1. 其余命令
    (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 操作文档

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elik-hb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值