MongoDB简记 笔记整理

MongoDB简记

*MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。*


  1. NoSQL = Not Only SQL 即不仅仅是SQL,非关系型数据库,用于超大规模数据的存储。
    • 关系型数据库遵循ACID规则:原子性,一致性,独立性,持久性
    • 分布式计算系统不可能同时满足三点:C一致性,A可用性,P分隔容忍。最多同时较好的满足两个,因此存在三大类的NoSQL数据库类型:
      • CA- 单点集群
      • CP-
      • AP-
    • NoSQL 数据库分类:
      • 列存储:HBase,Cassandra,Hypertable
      • 文档存储:MongoDB,CouchDB
      • key-value存储:
      • Redis,MemcacheDB,Tokyo Cabinet,Tyrant
        Berkeley DB
      • 图存储:Neo4J,FlockDB
      • 对象存储:db4o,Versant
      • xml数据库:Berkeley DB XML,BaseX
  2. MongoDB将数据存储在一个文档,数据结构为键值key=>value对组成,类似于json对象
  3. 基本概念:
    • database 数据库
    • collection 数据库表/集合
    • document 数据库记录/文档
    • field 数据库字段/域
    • index 索引
    • 不支持table joins
    • primary key 主键 自动将_id字段设置为主键
  4. MongoDB-连接
    • mongodb://username:password@hostnamedbname
  5. 创建数据库:
    • use dbname 不存在则创建存在切换到制定数据库
    • show dbs 查看所有数据库
    • 默认数据库test,如果没有创建新的数据库,集合默认存放在其中
  6. 删除数据库:
    • db.dropDatabase():删除当前数据库
    • 删除先use再删除
    • 删除集合为:db.collection.drop()
  7. 插入文档:
    • insert()或则save()指定了_id字段为更新数据,否则差不多是插入,语法:db.COLLECTION.insert(document)
  8. 更新文档:
    • update():
      db.collection.update(
      <query>,
      <update>,
      {
      upsert: <boolean>,
      multi: <boolean>,
      writeConcern: <document>
      }
  9. 删除文档:
    • db.collection.remove(
      <query>,
      <justOne>
      )
  10. 查询文档
    • db.col.find().pretty()
    • pretty()格式化形式显示所有文档
    • 等于 {<key>:<value>}
    • 小于 {<key>:{$lt:<value>}}
    • 小于等于 {<key>:{$lte:<value>}}
    • 大于 {<key>:{$gt:<value>}}
    • 大于等于 {<key>:{$gte:<value>}}
    • 不等于 {<key>:{$ne:<value>}}
    • AND条件 要用逗号分隔每个key
    • OR条件 使用 $or
  11. $type 操作符 基于BSON类型来检索集合中匹配的数据类型并返回结果
    • 类型 数字 备注
    • Double 1
    • String 2
    • Object 3
    • Array 4
    • Binary data 5
    • Undefined 6 已废弃。
    • Object id 7
    • Boolean 8
    • Date 9
    • Null 10
    • Regular Expression 11
    • JavaScript 13
    • Symbol 14
    • JavaScript (with scope) 15
    • 32-bit integer 16
    • Timestamp 17
    • 64-bit integer 18
    • Min key 255 Query with -1.
    • Max key 127
  12. Limit与Skip方法
    • limit()读取指定数量的数据记录:db.collection.find().limit(number)
    • skip()跳过指定数量的数据:db.collection.find().limit(number).skip(number)
  13. 排序 sort()
    • db.collection.find().sort({KEY:1})
    • 1 为升序 -1 为降序
  14. 索引
    • 创建索引:db.collection.ensureIndex({KEY:1})
    • 1指定按升序创建索引,-1降序
  15. 聚合
    • 用户处理数据如统计求平均值求和
    • db.collection.aggregate(AGGREGATE_OPERATION)
    • db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
      {
      "result" : [
      {
      "_id" : "w3cschool.cc",
      "num_tutorial" : 2
      },
      {
      "_id" : "Neo4j",
      "num_tutorial" : 1
      }
      ],
      "ok" : 1
      }
    • group, g r o u p , sum, avg, a v g , min, max, m a x , push(在结果文档中插入值到一个数组中), addToSet(), a d d T o S e t ( 在 结 果 文 档 中 插 入 值 到 一 个 数 组 中 , 但 不 创 建 副 本 ) , first,$last
    • 管道 ==> 将当前命令的输出结果作为下一个命令的参数
      • $project:修改输入文档的结构
      • $match:过滤数据
      • $limit:限制返回文档数
      • $skip
      • $unwind:拆分文档中某一个数组字段为多条
      • $group:分组,用于统计结果
      • $sort: 排序
      • $genNear:输出接近某一个地理位置的有序文档
  16. 复制(副本集)
    • 用于同步数据在多个服务器的过程
    • 主从节点,主节点负责处理客户端请求,其余节点负责复制主节点的数据。
    • 定期轮询
    • 语法:
      mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
      -添加副本集成员:rs.add(HOST_NAME:PORT)
  17. 分片
    • 为满足数据量大量增长的需求
    • 三个主要组件:
      • shard:存储实际的数据块
      • config Server 存储整个ClusterMetadata,包括chunk信息
      • Query Rouers:前端路由,客户端接入口,使整个集群像是一个单一数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值