MongoDb学习笔记-1

1.简介

mongoDb是一款性能非常优秀的nosql型文档数据库,横向扩展支持很大数据量和并发。

主要特点:

  • 存储数据模型是json

  • 不需要提前创建数据模型

  • 4.0后支持分布式事物

  • 多形性(同一个集合可以包含不同字段(类型)的文档对象

  • 动态性(线上修改数据模式,修改时应用于数据库无续修改schema)

  • 数据治理(支持对collection进行json scheme来规范数据模式)

目前mongo有两个版本,开源版与企业版

 

2.发展历程

  • 2008年起步

  • 2010 1.x支复制集与分片集

  • 2012 2.x更丰富的数据库功能

  • 2014 3.x 整合WiredTiger引擎和周边生态环境

  • 2018 4.x 分布式事务

3.与关系型数据库比较

 MongoDbRDBMS(关系型数据库)
数据模型json文档模型关系模型
数据库类型OLTPOLTP
CRUD操作MQL/SQLSQL
高可用复制集集群模式
横向扩展能力通过原生分片完善支持数据分区或者应用侵入式
索引支持B-树、全文索引、地理位置索引、 多键(multiKey)索引、TTL索引(自动过期)B+树(mysql)
开发难度简单困难
数据容量没有理论上限千万、亿
扩展方式垂直扩展+水平扩展垂直扩展

4.数据库搭建

  • 从mongoDb官网下架社区或者企业版

  • 还可申请mongo免费的私人db

 

5.基本操作(MQL)

  • insert db.collection.insert([{"a":"1"},{"b":2} ])

  • find db.collection.find($and($or):[{"a":"1","..."},{}],{"_id":0})

    • $or 或

    • $and 且

    • $gt 大于

    • $gte 大于等于

    • $lt 小于

    • $lte 小于等于

    • $in 在数组中

    • $nin 不在数组中

    • $ne 不等于

    • $exists 存在 false/true

  • remove db.collection.remove({"a":"1"}) //需要制定参数

  • update db.collection.updateOne\Many({"a",1} (条件),{$set:{"a":1}}(设置)}

    • $push 增加到数组底部

    • $pushAll 增加多个对象到底部

    • $pop 从数组底部删除一个对象

    • $pull 如果匹配制定的值,从数组中删除相应的对象

    • $pullAll 如果匹配任意的值,从数据中删除相应的对象

    • $addToSet 如果不存在则增加一个值到数组

  • drop 删除集合与索引 db.collection.drop()

  • dropDatebase

数据聚合操作

整个聚合运算称为管道,由多个步骤组成:

每个管道:

  • 接受一系列文档

  • 每个步骤对这些文档进行一系列运算

pipeline =[$stage1,$stage2....]

dp.collection.aggregate(

pipeline,

{options}

);

步骤类型:

  • $match

  • $project 投影 as

  • $sort

  • $group

  • $skip/$limit 结果限制

  • $lookup 左外连接

  • $unwind 展开数组

  • $graphLookup 图搜索

  • $facet/$bucket 分组搜索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值