MongoDB 和 mySql 的关系

1. mysql 和 MongoDb

  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/次每秒。

2. MongoDB 数据存储

  mongodb以BSON结构(二进制)进行存储,对海量数据存储有着很明显的优势。下面是Mongodb与Mysql的操作命令的对比

  

作用

 
MySQL


MongoDB


 


 


 


服务器守护进程


mysqld


mongod


客户端工具


mysql


mongo


逻辑备份工具


mysqldump


mongodump


逻辑还原工具


mysql


mongorestore


数据导出工具


mysqldump


mongoexport


数据导入工具


source


mongoimport


 


 


 


新建用户并授权


grant all on *.*
to [email protected]‘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‘})  错误

(文字来自转载)

时间: 2024-11-07 17:40:07

MongoDB 和 mySql 的关系的相关文章

mongodb与mysql的命令对比

mongodb与mysql命令对比 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象(document)三个层次组成.MongoDB对于关系型数据库里的表,但是集合中没有列.行和关系概念,这体现了模式自由的特点. MySQL MongoDB 说明 mysqld mongod 服务器守护进程 mysql mongo 客户端工具 mysqldump mongo

MongoDB与Mysql常用命令解释

原文 本文旨在介绍MongoDB,Mysql的常用命令:将MongoDB 和传统的关系型数据库的常用命令对照起来学习,更加便于记忆和理解. mongodb与mysql命令对比 MongoDB是由数据库(database/repository).集合(collection).文档对象(document)三个层次组成.MongoDB中集合对应关系型数据库里的表,但是集合中没有列.行和关系的概念,这体现了模式自由的特点. 传统的关系数据库一般由数据库(database).表(table).记录(rec

MongoDB与MySQL的插入、查询性能测试

1.1  MongoDB的简单介绍 在当今的数据库市场上,MySQL无疑是占有一席之地的.作为一个开源的关系型数据库,MySQL被大量应用在各大网站后台中,承担着信息存储的重要作用.2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品. 而MongoDB是一种文件导向的数据库管理系统,属于一种通称为NoSQL的数据库,是10gen公司旗下的开源产品,其内部数据存储的方式与传统的关系型数据有很大差别. NoSQL的全称是Not Only SQL,也可以理解非关系

Mongodb 与 MySQL对比

在数据库存放的数据中,有一种特殊的键值叫做主键,它用于惟一地标识表中的某一条记录.也就是说,一个表不能有多个主键,并且主键不能为空值. 无论是MongoDB还是MySQL,都存在着主键的定义. 对于MongoDB来说,其主键名叫"_id",在生成数据的时候,如果用户不主动为其分配一个主键的话,MongoDB会自动为其生成一个随机分配的值. 在MySQL中,主键的指定是在MySQL插入数据时指明PRIMARY KEY来定义的.当没有指定主键的时候,另一种工具 -- 索引,相当于替代了主键

MongoDB与MySQL的插入性能测试【转】

1.1  MongoDB的简单介绍 在当今的数据库市场上,MySQL无疑是占有一席之地的.作为一个开源的关系型数据库,MySQL被大量应用在各大网站后台中,承担着信息存储的重要作用.2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品. 而MongoDB是一种文件导向的数据库管理系统,属于一种通称为NoSQL的数据库,是10gen公司旗下的开源产品,其内部数据存储的方式与传统的关系型数据有很大差别. NoSQL的全称是Not Only SQL,也可以理解非关系

非替代品,MongoDB与MySQL对比分析

IT168 评论]对于只有SQL背景的人来说,想要深入研究NoSQL似乎是一个艰巨的任务,MySQL与MongoDB都是开源常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL数据库.它们各有优点,关键看用在什么地方. 什么情况下,MongoDB是最好的选择? 很多人认为MongoDB难以置信的强大,是一个可扩展,界面交互友好的数据库解决方案.当开发人员需要负责管理数据库环境时,MongoDB是一个不错的选择.起码在小型企业和初创公

用mysql workbench导出mysql数据库关系图

用mysql workbench导出mysql数据库关系图 1. 打开mysql workbench,选择首页中间"Data Modeling"下方的第二栏"Create EER Model From Existing Database";2. 在"Stored Connection"里选择"Manage Stored Connections...";3. 在Manage DB Connections里选择“New”新建连接,

MongoDB与MySQL对比

MongoDB语法 MySql语法 db.test.find({'name':'foobar'}) <==> select * from test where name='foobar' db.test.find() <==> select * from test db.test.find({'ID':10}).count() <==> select count(*) from test where ID=10 db.test.find().skip(10).limit

MongoDB与MySQL的操作对比表及区别介绍

MongoDB与MySQL的操作对比表及区别介绍 MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库.它们各有各的优点,关键是看用在什么地方.所以我们所熟知的那些SQL(全称Structured Query Language)语句就不适用于MongoDB了,因为SQL语句是关系型数据库的标准语言. 以我们公司项目为例,在早期的项目中,都在使用关系型数据库,用过SQLServer,Orac