MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。

    以我们公司项目为例,在早期的项目中,都在使用关系型数据库,用过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'})  错误
 
 
 

[转]MySQL与MongoDB的操作对比的更多相关文章

  1. MySQL 与 MongoDB的操作对比

    MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库.它们各有各的优点,关键是看用在什么地方 ...

  2. MySQL与MongoDB的操作对比,以及区别

    MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库.它们各有各的优点,关键是看用在什么地方 ...

  3. MySQL与MongoDB的操作对比

    MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库.它们各有各的优点,关键是看用在什么地方 ...

  4. 1.MySQL与MongoDB的操作对比,以及区别

    转自:https://www.cnblogs.com/chris-oil/p/4982490.html MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoD ...

  5. MySQL与MongoDB的区别

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

  6. 从MySQL和MongoDB的对比,看SQL与NoSQL的较量

    张家江,网易乐得高级工程师. 贵金属(注:贵金属为笔者部门业务)的行情系统提供的接口通过Redis获取数据,目前使用Redis最多只存储了大概8000条左右的分钟k的行情数据,考虑到将来可能会有更大数 ...

  7. MySQL和Mongodb的区别与应用场景对比

    MySQL是关系型数据库 优势: 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,mysql的份额页在持续增长. 缺点 ...

  8. Mongodb学习总结(2)——MongoDB与MySQL区别及其使用场景对比

    对于只有SQL背景的人来说,想要深入研究NoSQL似乎是一个艰巨的任务,MySQL与MongoDB都是开源常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数 ...

  9. mongoDB 数据库操作

    mongoDB 数据库操作 数据库命名规则 . 使用 utf8 字符,默认所有字符为 utf8 . 不能含有空格 . / \ "\0" 字符 (c++ 中会将 "\0&q ...

随机推荐

  1. [译]JavaScript中,{}+{}等于多少?

    最近,Gary Bernhardt在一个简短的演讲视频“Wat”中指出了一个有趣的JavaScript怪癖:在把对象和数组混合相加时,会得到一些你意想不到的结果.本篇文章会依次讲解这些计算结果是如何得 ...

  2. 深入理解javascript事件流

    摘要:事件流这个东西是比较重要的,为了让自己更加理解js中的事件流,必须整理整理,梳理一下事件流的各种东西啊.本文大部分内容参考<javascript高级程序设计第三版> 先来一段书里的原 ...

  3. 使用Redis实现用户积分排行榜的教程

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/129.html?1455808528 排行榜功能是一个很普遍的需求.使用 ...

  4. Windows 远程停止iis服务

    最近遇到一个小需求,需要重启远程计算机的iis服务. 需求背景是这样的,用jenkins 做ci的时候, 由于项目是有单独的web服务器,项目虽然是一套, 但是分为A,B,C三个web系统,其中A,B ...

  5. vc个版本对应的vs版本

    VC6VC7(2003)VC8(2005)VC9(2008)VC10(2010)VC11(2012)VC12(2013)VC14(2015)

  6. 解决android SwipeRefreshLayout recyclerview 不能下拉

    http://stackoverflow.com/questions/25178329/recyclerview-and-swiperefreshlayout 23down vote write th ...

  7. 转:Hide data inside pointers(在指针中隐藏数据)

    该文介绍了如何使用指针中一些未使用的位来隐藏一些数据. When we write C code, pointers are everywhere. We can make a little extr ...

  8. Speech两种使用方法

    COM组件使用speech: public class Speach { private static Speach _Instance = null ; private SpeechLib.SpVo ...

  9. Atlas+Keepalived系列二:管理Atlas

    1:登录代理端口1234 [root@localhost bin]# mysql -uroot -p -P1234 -h127.0.0.1 proxy-address项配置,例如proxy-addre ...

  10. JavaScript日期对象使用总结

    javascript Date日期对象的创建 创建一个日期对象: var objDate=new Date([arguments list]); 我总结了参数形式主要有以下3种: new Date(& ...