MongoDB之一介绍(MongoDB与MySQL的区别、BSON与JSON的区别)
MySQL与MongoDB的操作对比,以及区别
MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。所以我们所熟知的那些SQL(全称Structured Query Language)语句就不适用于MongoDB了,因为SQL语句是关系型数据库的标准语言。
|
作用 |
MySQL |
MongoDB |
|
|
|
|
|
服务器守护进程 |
mysqld |
mongod |
|
客户端工具 |
mysql |
mongo |
|
逻辑备份工具 |
mysqldump |
mongodump |
|
逻辑还原工具 |
mysql |
mongorestore |
|
数据导出工具 |
mysqldump |
mongoexport |
|
数据导入工具 |
source |
mongoimport |
|
|
|
|
|
新建用户并授权 |
grant all on *.* |
db.addUser("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 |
db.tname.update({id:2}, |
|
|
|
|
|
查询所有记录 |
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 |
db.tname.find({id:2, |
|
条件查询 |
select * from tname where id=2 |
db.tname.find($or:[{id:2}, |
|
条件查询 |
select * from tname limit 1; |
db.tname.findOne() |
|
|
|
|
|
模糊查询 |
select * from tname where name |
db.tname.find({name:/ste/}) |
|
模糊查询 |
select * from tname where name |
db.tname.find({name:/^ste/}) |
|
|
|
|
|
获取表记录数 |
select count(id) from tname; |
db.tname.count() |
|
获取有条件 |
select count(id) from tname |
db.tname.find({id:2}).count() |
|
查询时去掉 |
select distinct(last_name) |
db.tname.distinct('last_name') |
|
|
|
|
|
正排序查询 |
select *from tname order by id; |
db.tname.find().sort({id:1}) |
|
逆排序查询 |
select *from tname |
db.tname.find().sort({id:-1}) |
|
|
|
|
|
取存储路径 |
explain select * from tname |
db.tname.find({id=3}).explain() |

BSON与JSON的区别
BSON是由10gen开发的一个数据格式,目前主要用于MongoDB中,是MongoDB的数据存储格式。BSON基于JSON格式,选择JSON进行改造的原因主要是JSON的通用性及JSON的schemaless的特性。

BSON主要会实现以下三点目标:
1.更快的遍历速度
对JSON格式来说,太大的JSON结构会导致数据遍历非常慢。在JSON中,要跳过一个文档进行数据读取,需要对此文档进行扫描才行,需要进行麻烦的数据结构匹配,比如括号的匹配,而BSON对JSON的一大改进就是,它会将JSON的每一个元素的长度存在元素的头部,这样你只需要读取到元素长度就能直接seek到指定的点上进行读取了。
2.操作更简易
对JSON来说,数据存储是无类型的,比如你要修改基本一个值,从9到10,由于从一个字符变成了两个,所以可能其后面的所有内容都需要往后移一位才可以。而使用BSON,你可以指定这个列为数字列,那么无论数字从9长到10还是100,我们都只是在存储数字的那一位上进行修改,不会导致数据总长变大。当然,在MongoDB中,如果数字从整形增大到长整型,还是会导致数据总长变大的。
3.增加了额外的数据类型
JSON是一个很方便的数据交换格式,但是其类型比较有限。BSON在其基础上增加了“byte array”数据类型。这使得二进制的存储不再需要先base64转换后再存成JSON。大大减少了计算开销和数据大小。
当然,在有的时候,BSON相对JSON来说也并没有空间上的优势,比如对{“field”:7},在JSON的存储上7只使用了一个字节,而如果用BSON,那就是至少4个字节(32位)
目前在10gen的努力下,BSON已经有了针对多种语言的编码解码包。并且都是Apache 2 license下开源的。并且还在随着MongoDB进一步地发展。
MongoDB之一介绍(MongoDB与MySQL的区别、BSON与JSON的区别)的更多相关文章
- 【转】BSON 和 JSON 的区别
BSON与JSON的区别 BSON是由10gen开发的一个数据格式,目前主要用于MongoDB中,是MongoDB的数据存储格式.BSON基于JSON格式,选择JSON进行改造的原因主要是JSON的通 ...
- BSON与JSON的区别
BSON是由10gen开发的一个数据格式,目前主要用于MongoDB中,是MongoDB的数据存储格式.BSON基于JSON格式,选择JSON进行改造的原因主要是JSON的通用性及JSON的schem ...
- MongoDB shell 介绍
MongoDB shell 介绍 MongoDB自带javascript shell, 可在shell中使用命令行与MongoDB实列交互.shell可以执行管理操作,检查运行实列等等操作. 一:如何 ...
- MongoDB入门(介绍、安装、增删改查)
文章作者公众号bigsai,已收录在回车课堂,如有帮助还请不吝啬点个赞赞支持一下! 课程导学 大家好我是bigsai,我们都学过数据库,但你可能更熟悉关系(型)数据库例如MySQL,SQL SERVE ...
- 二十三、MongoDb 数据库介绍、安装、启动和连接(非关系型数据库)
1.数据库和文件的主要区别 1. 数据库有数据库表.行和列的概念,让我们存储操作数据更方便2. 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功 ...
- MongoDb 学习笔记(一) --- MongoDb 数据库介绍、安装、使用
1.数据库和文件的主要区别 . 数据库有数据库表.行和列的概念,让我们存储操作数据更方便 . 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功能 ...
- Mongodb简单介绍
1. 简单介绍 Mongodb是一种强大.灵活,可扩展的数据存储方式.属于nosql.非关系型数据库的一种. mongodb是面向文档的数据库. 尽管是非关系型数据库.可是它保留了很多关系型数据库的特 ...
- SpringBoot 整合 MongoDB 实战介绍
一.介绍 在前面的文章中,我们详细的介绍了 MongoDB 的配置和使用,如果你对 MongoDB 还不是很了解,也没关系,在 MongoDB 中有三个比较重要的名词:数据库.集合.文档! 数据库(D ...
- Python MongoDB使用介绍
MongoDB介绍 MongoDB是一个面向文档的,开源数据库程序,它平台无关.MongoDB像其他一些NoSQL数据库(但不是全部!)使用JSON结构的文档存储数据.这是使得数据非常灵活,不需要的S ...
随机推荐
- Linux基础--例行工作
1.仅进行一次的工作排程--at at的工作情况其实是这样的: 1)先找寻/etc/at.allow这个档案,写在这个档案中的使用者才能使用at,没有在这个档案中的使用者则不能使用at(即使没有写在a ...
- QT中可以用QProgressBar或着QProgressDialog来实现进度条
QProgressBar的使用 首先在designer中拖一个按钮和进度条部件,按下面初始化 //补充:下面两句写在MainWindow的构造函数里进行初始化 ui->progressBar-& ...
- HttpClient基本用法
<Apache HttpClient 4.3开发指南> Apache HttpClient 4系列已经发布很久了,但由于它与HttpClient 3.x版本完全不兼容,以至于业内采用此库的 ...
- Android 广播(内部类)
1.广播定义在一个单独的文件中 源码: public class MessageReceiver extends BroadcastReceiver{ @Override public void on ...
- jsp %EF%BB%BF
utf-8 bom 问题,页面中存在不可忽略的空白,去掉即可 很微妙的一个空格,不易发现
- [原]1856-More is better-基础并查集
思路:注意n为0的时候输出1,还有内存.这题是数据水了,要不我的Count[ ]数组,开10^5绝对会WA.离散化还没想清楚,想清楚了再更新代码.[水过代码下面是正经的AC代码,其实这道题不用离散化, ...
- 《c程序设计语言》读书笔记--首次输入不能是空符;最多10个字符
#include <stdio.h> #define Num 10 int main() { int wor = 0; int arr[Num] = {0}; int c,count = ...
- G-sensor 与M-sensor区别
g-sensor是重力传感器,能感应芯片在三个方向(通常是)上的重力加速度.手机里的重力球用的就是这个技术,m-sensor如果是motion sensor的简称的话,基本上指的和g-sensor是一 ...
- Jquery和一些Html控件
1.1 Jquery中如何获取各种Html控件的值 1.$("#ID").val(); 2.Check获取选中的值:$("#ID").is(&quo ...
- 将js对象转为json对象属性加上引号
工具地址 http://js2json.mengxiangchaoren.com