MongoDB详解(1)

MongoDB详解(1)

MongoDB

概念

  • MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。(支持分布式)

优点

  1. MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
  2. 如果负载的增加,它可以分布在计算机网络中的其他节点上这就是所
    谓的分片
  3. MongoDB支持各种编程语言 :RUBY,PYTHON,JAVA,C++,
    PHP,C#等多种语言。
  4. 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的
    扩展性。

特点

  1. 无需要跨文档或跨表的事务及复杂的join查询支持(不支持事务和联查)
  2. 敏捷迭代的业务,需求变动频繁,数据模型无法确定
  3. 存储的数据格式灵活,不固定,或属于半结构化数据
  4. 业务并发访问量大(分布式)
  5. TB级以上的海量数据存储,且数据量不断增加(大数据量)
  6. 要求存储的数据持久化、不丢失
  7. 需要99.999%的数据高可用性
  8. 需要大量的地理位置查询、文本查询

MongoDB解决Mysql 的"三高"问题(mysql的缺点或劣势)

  • 对数据库高并发写入需求
  • 对海量数据高效率存储访问需求
  • 对数据库高扩展和高可用的需求

MongoDB 实际应用

  • 社交场景,比如朋友圈,附近的人的地点的存储
  • 游戏场景,比如用户当前装备,得分等
  • 物流场景,比如快递的位置,状态,途径
  • 视频场景,比如直播中的点赞数和互动留言等

MongoDB的操作

库操作
查看所有库
show dbs;
创建库
use myschool;
查看当前库
db;
删除库
db.dropDatabase();
集合操作
查看集合
show collections;
创建集合
db.createCollection("student");
删除集合
db.student.drop();
数据操作
插入数据
db.student.insert({ name: "张三", age: 18, money: 12000.00 });
db.student.insert({ name: "李四", age: 20, money: 12000.00 });
db.student.insert({ name: "王五", age: 25, money: 12000.00 });
db.student.insert({ name: "老刘", age: 3, money: 12000.00 });
db.student.insert({ name: "七七", age: 52, money: 12000.00 });
db.student.insert({ name: "钱二", age: 33, money: 12000.00 });
修改
db.student.update(
    { name: "张三" },
    { $set: { age: 20 } }
)
查询不到要修改的数据时,添加{upsert:true}
db.student.update(
    { uname: "张三" },
    { $set: { age: 20 } },
    { upsert: true }
)
一次修改多个 {multi:true}
db.student.update(
    { name: "张三" },
    { $set: { name: "张三丰" } },
    { multi: true }
)
在原来的基础上加-20 $inc: { age: NumberInt(-20) }
db.student.update(
    { uname: "张三" },
    { $inc: { age: NumberInt(-20) } }
)
删除

{}占位符 代表全部

db.student.remove({})
删除所有符合条件的数据
db.student.remove({ name: "张三丰" })
只删除查到的第一条数据
db.student.remove(
    { name: "张三丰" },
    { justOne: true }
)
查询
db.student.find()

db.student.find({ name: "张三" })

db.student.find({ age: { $lt: 20 } });
db.student.find({ age: { $lte: 20 } });
db.student.find({ age: { $gt: 20 } });
db.student.find({ age: { $gte: 20 } });

db.student.find({ age: { $ne: 20 } });
多个条件查询时
db.student.find(
    {
        name: { $ne: "张三" },
        age: { $lt: 20 }
    }
);

db.student.find(
    {
        $or: [
            { name: { $ne: "张三" } },
            { age: { $lte: 20 } }
        ]
    }
);
范围查询
db.student.find({age: { $gte: 20 , $lte: 50} });
模糊查询 -- 正则表达式
db.student.find({name:/张/});
db.student.find({name:/^张/});
db.student.find({name:/张$/});
分页
db.student.find().limit(3).skip((2-1)*3)
统计
db.student.count({age})
排序
db.student.find().sort({age:1})
索引
查看索引
db.student.getIndexes()
创建索引 1升序 ,-1降序
db.student.createIndex({name:1});
db.student.createIndex({name:-1});
删除索引
db.student.dropIndex({name:-1});
相关推荐
刘大浪8 分钟前
后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用
数据库·spring boot·mybatis
无敌岩雀16 分钟前
MySQL中的索引
数据库·mysql
a_安徒生38 分钟前
linux安装TDengine
linux·数据库·tdengine
程序员学习随笔41 分钟前
PostgreSQL技术内幕19:逻辑备份工具pg_dump、pg_dumpall
数据库·postgresql
尘浮生1 小时前
Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
偶尔。5351 小时前
什么是事务?事务有哪些特性?
数据库·oracle
安迁岚1 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验六 视图
数据库·sql·mysql·oracle·实验报告
xoxo-Rachel1 小时前
(超级详细!!!)解决“com.mysql.jdbc.Driver is deprecated”警告:详解与优化
java·数据库·mysql
JH30732 小时前
Oracle与MySQL中CONCAT()函数的使用差异
数据库·mysql·oracle
蓝染-惣右介2 小时前
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
java·数据库·tomcat·mybatis