MongoDB操作

安装参考文档:https://mongodb.net.cn/manual/tutorial/install-mongodb-on-debian/

请写出MongoDB术语相对应的关系数据库术语

关系数据库 术语/概念MongoDB 术语/概念
数据库 database数据库 database
表 table文档集/集合 colleaction
行 row文档 document or BSON 文档
列 column字段/域 field
索引 index索引 index
表链接$lookup,嵌入式文件(3.2新增)
主键 primary key对象主键(Objectid) primary key (自动将id字段设置为主键)
聚类 (eg: groupby)聚合管道

其余未深入了解,暂不列出。
详细可查阅:
https://mongodb.net.cn/manual/reference/sql-comparison/
https://mongodb.net.cn/manual/reference/sql-aggregation-comparison/

并简述MongoDB特点。

MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包括其他文档,数组和文档数组。

使用文档的优点是

  • 文档(即对象)对应于许多编程语言中的本机数据类型。
  • 嵌入式文档和数组减少了对昂贵连接的需求。
  • 动态模式支持流畅的多态性。

MongoDB提供高性能的数据持久性。

  • 对嵌入式数据模型的支持减少了数据库系统上的I / O活动。
  • 索引支持更快的查询,并且可以包括来自嵌入式文档和数组的键。

高可用性
MongoDB的复制工具(称为副本集)提供:

  • 自动故障转移
  • 数据冗余。

副本集是一组保持相同的数据集,从而提供冗余和提高数据可用性的MongoDB服务器。

水平可伸缩性

  • 分片在一组计算机集群分布数据。
  • 从3.4开始,MongoDB支持基于shard键创建数据区域。在平衡的集群中,MongoDB仅将区域覆盖的读写定向到区域内的那些分片。

其他特点

  1. 支持特别查询:在MongoDB中,可以通过字段,范围查询进行搜索,并且还支持正则表达式搜索。
  2. 索引可以索引文档中的任何字段。
  3. 复制MongoDB支持主从复制。主机可以执行读写操作,从机从主机复制数据,只能用于读取或备份(不写入)
  4. 复制数据MongoDB可以在多台服务器上运行。 复制数据以保持系统正常运行,并在硬件故障的情况下保持其运行状态。故障的情况下易于管理。
  5. 具有自动负载平衡配置。
  6. 支持映射缩减和聚合工具
  7. 使用JavaScript而不是Procedure
  8. 高性能
  9. 轻松存储任何大小的文件,而不会使堆栈复杂化

完成如下数据库shell命令操作内容:

  1. 建立一个工作室学习数据库,并建立学生信息文档集,其中需含有(姓名,年龄,工作室编号,学号,简历)等字段(field),简历字段为字符串类型;

造数据

import random
import faker
import json

f = open("stuInfo.json", 'w')
fkName = faker.Faker(locale='zh_CN')

stuId = 123456789000
studioId = [6811, 6813, 6816, 6817, 6818]
status = ['群众', '入团积极分子', '团员', '入党积极分子', '预备党员', '党员']

stu = []

for i in range(150):
    stuId += 1
    p = {
        'name': fkName.name(),
        'age': random.randint(19, 24),
        'stuId': stuId,
        'studioId': random.choice(studioId),
        'status': random.choice(status),
    }
    stu.append(p)
random.shuffle(stu)
json.dump(stu, f, ensure_ascii=False)
  1. 将大数据工作室同学名单插入到文档集,每个工作室不少于10人;

上述问题以及输出一个 stuInfo.json 文件,批量插入即可

> use stuInfo
switched to db stuInfo
> db.stuInfo.insert('内容')
# 此处会将json中数据批量插入
> show dbs
admin    0.000GB
config   0.000GB
local    0.000GB
stuInfo  0.000GB
# 可以发现创建成功
> db.stuInfo.find({})
> db.stuInfo.count()
# 可分别查看插入内容以及插入数据记录数

由于插入数据量较大,此处不完整展示

  1. 查找年龄大于22岁的同学信息;
> db.stuInfo.find({age:{$gt:22}})
  1. 使用正则表达式或其它方法,查找简历中含有 (“团员” “入团”)字符串的学生信息;
> db.stuInfo.find({$or:[{"status":{$regex:"入团"}},{"status":{$regex:"团员"}}]})
  1. 根据工作室分类,统计每个工作室的学生人数;
> db.stuInfo.aggregate([{$group : {_id : "$studioId", totalNum : {$sum : 1}}}])
  1. 将你所在工作室同学的年龄加1。
> db.stuInfo.update({"studioId":6818},{"$inc":{"age":1}},{"multi":true})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值