转自:https://www.cnblogs.com/chris-oil/p/4982490.html

MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。所以我们所熟知的那些SQL(全称Structured Query Language)语句就不适用于MongoDB了,因为SQL语句是关系型数据库的标准语言。

以我们公司项目为例,在早期的项目中,都在使用关系型数据库,用过SQLServer,Oracle,DB2,后来全部转向Mysql,原因很简单:Mysql在性能不错的情况下,有着开源优势。Mysql的事务性与高性能是我们主要考虑的。后来,由于项目要用到用户系统,即会有大量的用户数据进行交互--海量存储,Mysql的读写速度会有一点瓶颈,于是我们就想到了最近发展很强势的Nosql。在Nosql早期的memcache的发展下,又出现了很多非关系型数据库,比如redis,mongodb。经过一段时间的测试,redis与mongodb的读写速度确实比Mysql有着很明显的优势。mongodb的写入速度大约2.5W/次每秒。
mongodb以BSON结构(二进制)进行存储,对海量数据存储有着很明显的优势。下面是Mongodb与Mysql的操作命令的对比。

作用

MySQL

MongoDB

 

 

 

服务器守护进程

mysqld

mongod

客户端工具

mysql

mongo

逻辑备份工具

mysqldump

mongodump

逻辑还原工具

mysql

mongorestore

数据导出工具

mysqldump

mongoexport

数据导入工具

source

mongoimport

 

 

 

新建用户并授权

grant all on *.*
to username@'localhost'
 identified by 'passwd';

db.addUser("user","psw")
db.auth("user","psw")

显示库列表

show databases;

show dbs

进去库

use dbname;

use dbname

显示表列表

show tables;

show collections

查询主从状态

show slave status;

rs.status

创建库

create database name;

无需单独创建,直接use进去

创建表

create table tname(id int);

无需单独创建,直接插入数据

删除表

drop table tname;

db.tname.drop()

删除库

drop database dbname;

首先进去该库,db.dropDatabase()

 

 

 

插入记录

insert into tname(id) value(2);

db.tname.insert({id:2})

删除记录

delete from tname where id=2;

db.tname.remove({id:2})

修改/更新记录

update tname set id=3
where id=2;

db.tname.update({id:2},
{$set:{id:3}},false,true)

 

 

 

查询所有记录

select * from tname;

db.tname.find()

查询所有列

select id from tname;

db.tname.find({},{id:1})

条件查询

select * from tname where id=2;

db.tname.find({id:2})

条件查询

select * from tname where id < 2;

db.tname.find({id:{$lt:2}})

条件查询

select * from tname where id >=2;

db.tname.find({id:{$gte:2}})

条件查询

select * from tname where id=2
and name='steve';

db.tname.find({id:2,
name:'steve'})

条件查询

select * from tname where id=2
or name='steve';

db.tname.find($or:[{id:2},
{name:'steve'}])

条件查询

select * from tname limit 1;

db.tname.findOne()

 

 

 

模糊查询

select * from tname where name
like "%ste%";

db.tname.find({name:/ste/})

模糊查询

select * from tname where name
like "ste%";

db.tname.find({name:/^ste/})

 

 

 

获取表记录数

select count(id) from tname;

db.tname.count()

获取有条件
的记录数

select count(id) from tname
where id=2;

db.tname.find({id:2}).count()

查询时去掉
重复值

select distinct(last_name)
from tname;

db.tname.distinct('last_name')

 

 

 

正排序查询

select *from tname order by id;

db.tname.find().sort({id:1})

逆排序查询

select *from tname
order by id desc;

db.tname.find().sort({id:-1})

 

 

 

取存储路径

explain select * from tname
where id=3;

db.tname.find({id=3}).explain()

特别要注意的是:mongodb插入多个字段语法
> db.user.insert({id:1,name:'steve',sex:'male'})  正确
> db.user.insert({id:2},{name:'bear'},{sex:'female'})  错误

1.MySQL与MongoDB的操作对比,以及区别相关推荐

  1. Docker安装部署MongoDB及MySql和MongoDB的语法对比

    MongoDB是一个免费的.开源的.跨平台分布式面向文档存储的数据库,由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品 ...

  2. MySQL与MongoDB设计实例对比

    MySQL与MongoDB设计实例对比 2011年06月15日14:06 来源:huoding 作者:老王 编辑:胡铭娅 评论:0条 如果使用MongoDB的话,应该如何存取数据呢? 如果使用Mong ...

  3. [转] MySQL和MongoDB设计实例对比

    转载自: http://www.phpchina.com/?action-viewnews-itemid-39896 文章举了一个数据库设计的例子,对MySQL和MongoDB两种存储工具,分别进行了 ...

  4. MySQL、MongoDB、列数据库的区别及应用场景

    目录 什么是行存储和列存储? 什么是MongoDB(NoSQL)? OLTP和OLAP 什么是CAP定理? 使用场景 行存储的适用场景: 列存储的适用场景: MongoDB相对于MySQL的优点 更适 ...

  5. MySQL与MongoDB的区别

    什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供 ...

  6. mysql qpstps测试_mysql操作日志

    关于 mysql操作日志的搜索结果 回答 增量备份的原理就是使用了mysql的binlog日志.本次操作的MySQL版本为5.5.40 for Linux (x86_64).增量备份要确保打开了二进制 ...

  7. MySQL、MongoDB、Redis 数据库之间的区别

    [转自]:https://blog.csdn.net/CatStarXcode/article/details/79513425 NoSQL 的全称是 Not Only SQL,也可以理解非关系型的数 ...

  8. mongodb netcore 操作封装_mongodb 的基本函数语法封装

    //这个模块里面封装了所有对数据库的常用操作 var MongoClient = require('mongodb').MongoClient; var config = require(" ...

  9. SQL与NoSQL的区别 以MySQL与MongoDB为例

    异同对比 1.语言和结构层面 SQL数据库,是基于表的,并且用结构化语言也就是SQL来定义和操纵数据.一方面,这是非常强大的:SQL是最通用和最广泛使用的选项之一,使其成为一个安全的选择,尤其适用于复 ...

最新文章

  1. htmlparser解析网站时服务器返回的文件编码和页面编码不一致问题
  2. 微软如何在3年内将数据中心的用水量削减95%
  3. 使用ftp上传文件到Unix系统注意事项
  4. InfluxDB学习之InfluxDB数据保留策略(Retention Policies)
  5. mysql 查看表v空间自增涨_MySQL InnoDB表空间加密
  6. 图像处理——DCT变换的学习笔记
  7. 后缀数组三·重复旋律3
  8. python循环捕捉异常_python – 如何在for循环迭代器中捕获异常
  9. Cesium中获取坐标点地形高程的方法
  10. 重庆小飞龙前端第一天----了解html
  11. java 实现 微博_java实现的新浪微博分享代码实例
  12. wds(无线分布式系统)
  13. 程序员画手WLOP个人网站
  14. 利用装饰器模拟博客园登陆
  15. c/c++函数 -strtol strtoll strtoul strtoull 使用注意项cc
  16. IBMMQ-安装IBMMQ服务端7.5(windows)
  17. Java Web 胡言乱语 之三
  18. 2022-2027年中国图书零售连锁市场竞争态势及行业投资前景预测报告
  19. Windows 那些坑
  20. python3 中__dict__的用法

热门文章

  1. python linux系统管理与自动化运维_《Python Linux系统管理与自动化运维》赖明星著【摘要 书评 在线阅读】-苏宁易购图书...
  2. Flutter开发之布局-1-Column(15)
  3. python微信红包代码_有了这个再也不担心任何微信红包,Python就是好用
  4. http协议的Request Payload 和 Form Data 的区别
  5. 省选专练[CQOI2007]涂色
  6. javascript DOM 编程艺术----笔记
  7. poj 1033 Defragment
  8. HDU-1162-Eddy's picture
  9. SEO小程:医院网站优化之如何分析竞争对手的网站
  10. R语言-处理异常值或报错的三个示例