读《左手MongoDB,右手Redis》之MongoDB

之前整理过MongoDB,趁着这次手不生,记录在此。

配套视频 https://www.yuque.com/kingname/wtago8/xwg3gb

源代码 https://github.com/kingname/SourceCodeofMongoRedis

基础概念 #

MongoDB是非关系型数据库,文档型数据库

noSQL——not only SQL

关系型数据库怎么了 #

关系型数据库可能存在的问题:

  • 处理高并发写入复杂
  • 上亿数据查询慢
  • 分库 分表 大规模数据难整理
  • 分表 分库 变更需求修改困难
  • 修改表结构困难

有哪些非关系型数据库 #

非关系型数据库的大致分类:

  • key-value类型。比如redis 读写性能优秀
  • 文档类型。MongoDB 结构不严格
  • 列存储。Hbase分布式
  • 图。Neo4J 社交 推荐系统

MongoDB怎么了 #

MongoDB结构: 库 集合 文档 字段。特点是不需要预定义表结构,字段可以任意变动。并发写入性能好。

Redis怎么了 #

用途多:

  • 缓存。k-v 字符串 哈希表,告诉缓存
  • 队列。有序集合,哈希表
  • 去重

安装使用MongoDB #

安装不必说,可以用 docker起一个服务 连接推荐使用Robo 3T

MongoDB 语法 #

db.getCollection('xxx').insertOne({})
~.find({'age':{'$gt': 25}})
~.count() # 总数
~.limit() # 限制返回数量
~.sort(k:-1) # 排序 1 正序;-1 倒序
~.updateOne()
# 数据一般不删除,字段改变。
# 数据去重
~.distinct(字段名, 筛选条件)

案例中使用的是Python版本的 pymongo,这个到时候整理到Python范围内。语法没啥区别。