Mongo db 与mysql 语法比较
mongodb与mysql命令对比
传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。
|
MySQL |
MongoDB |
说明 |
|
mysqld |
mongod |
服务器守护进程 |
|
mysql |
mongo |
客户端工具 |
|
mysqldump |
mongodump |
逻辑备份工具 |
|
mysql |
mongorestore |
逻辑恢复工具 |
|
db.repairDatabase() |
修复数据库 |
|
|
mysqldump |
mongoexport |
数据导出工具 |
|
source |
mongoimport |
数据导入工具 |
|
grant * privileges on *.* to … |
Db.addUser() Db.auth() |
新建用户并权限 |
|
show databases |
show dbs |
显示库列表 |
|
Show tables |
Show collections |
显示表列表 |
|
Show slave status |
Rs.status |
查询主从状态 |
|
Create table users(a int, b int) |
db.createCollection("mycoll", {capped:true, size:100000}) 另:可隐式创建表。 |
创建表 |
|
Create INDEX idxname ON users(name) |
db.users.ensureIndex({name:1}) |
创建索引 |
|
Create INDEX idxname ON users(name,ts DESC) |
db.users.ensureIndex({name:1,ts:-1}) |
创建索引 |
|
Insert into users values(1, 1) |
db.users.insert({a:1, b:1}) |
插入记录 |
|
Select a, b from users |
db.users.find({},{a:1, b:1}) |
查询表 |
|
Select * from users |
db.users.find() |
查询表 |
|
Select * from users where age=33 |
db.users.find({age:33}) |
条件查询 |
|
Select a, b from users where age=33 |
db.users.find({age:33},{a:1, b:1}) |
条件查询 |
|
select * from users where age<33 |
db.users.find({'age':{$lt:33}}) |
条件查询 |
|
select * from users where age>33 and age<=40 |
db.users.find({'age':{$gt:33,$lte:40}}) |
条件查询 |
|
select * from users where a=1 and b='q' |
db.users.find({a:1,b:'q'}) |
条件查询 |
|
select * from users where a=1 or b=2 |
db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } ) |
条件查询 |
|
select * from users limit 1 |
db.users.findOne() |
条件查询 |
|
select * from users where name like "%Joe%" |
db.users.find({name:/Joe/}) |
模糊查询 |
|
select * from users where name like "Joe%" |
db.users.find({name:/^Joe/}) |
模糊查询 |
|
select count(1) from users |
Db.users.count() |
获取表记录数 |
|
select count(1) from users where age>30 |
db.users.find({age: {'$gt': 30}}).count() |
获取表记录数 |
|
select DISTINCT last_name from users |
db.users.distinct('last_name') |
去掉重复值 |
|
select * from users ORDER BY name |
db.users.find().sort({name:-1}) |
排序 |
|
select * from users ORDER BY name DESC |
db.users.find().sort({name:-1}) |
排序 |
|
EXPLAIN select * from users where z=3 |
db.users.find({z:3}).explain() |
获取存储路径 |
|
update users set a=1 where b='q' |
db.users.update({b:'q'}, {$set:{a:1}}, false, true) |
更新记录 |
|
update users set a=a+2 where b='q' |
db.users.update({b:'q'}, {$inc:{a:2}}, false, true) |
更新记录 |
|
delete from users where z="abc" |
db.users.remove({z:'abc'}) |
删除记录 |
|
db. users.remove() |
删除所有的记录 |
|
|
drop database IF EXISTS test; |
use test db.dropDatabase() |
删除数据库 |
|
drop table IF EXISTS test; |
db.mytable.drop() |
删除表/collection |
|
db.addUser(‘test’, ’test’) |
添加用户 readOnly-->false |
|
|
db.addUser(‘test’, ’test’, true) |
添加用户 readOnly-->true |
|
|
db.addUser("test","test222") |
更改密码 |
|
|
db.system.users.remove({user:"test"}) 或者db.removeUser('test') |
删除用户 |
|
|
use admin |
超级用户 |
|
|
db.auth(‘test’, ‘test’) |
用户授权 |
|
|
db.system.users.find() |
查看用户列表 |
|
|
show users |
查看所有用户 |
|
|
db.printCollectionStats() |
查看各collection的状态 |
|
|
db.printReplicationInfo() |
查看主从复制状态 |
|
|
show profile |
查看profiling |
|
|
db.copyDatabase('mail_addr','mail_addr_tmp') |
拷贝数据库 |
|
|
db.users.dataSize() |
查看collection数据的大小 |
|
|
db. users.totalIndexSize() |
查询索引的大小 |
mongodb语法
MongoDB的好处挺多的,比如多列索引,查询时可以用一些统计函数,支持多条件查询,但是目前多表查询是不支持的,可以想办法通过数据冗余来解决多表查询的问题。
MongoDB对数据的操作很丰富,下面做一些举例说明,内容大部分来自官方文档,另外有部分为自己理解。
查询colls所有数据
db.colls.find() //select * from colls
通过指定条件查询
db.colls.find({‘last_name’: ‘Smith’});//select * from colls where last_name=’Smith’
指定多条件查询
db.colls.find( { x : 3, y : “foo” } );//select * from colls where x=3 and y=’foo’
指定条件范围查询
db.colls.find({j: {$ne: 3}, k: {$gt: 10} });//select * from colls where j!=3 and k>10
查询不包括某内容
db.colls.find({}, {a:0});//查询除a为0外的所有数据
支持<, <=, >, >=查询,需用符号替代分别为$lt,$lte,$gt,$gte
db.colls.find({ “field” : { $gt: value } } );
db.colls.find({ “field” : { $lt: value } } );
db.colls.find({ “field” : { $gte: value } } );
db.colls.find({ “field” : { $lte: value } } );
也可对某一字段做范围查询
db.colls.find({ “field” : { $gt: value1, $lt: value2 } } );
不等于查询用字符$ne
db.colls.find( { x : { $ne : 3 } } );
in查询用字符$in
db.colls.find( { “field” : { $in : array } } );
db.colls.find({j:{$in: [2,4,6]}});
not in查询用字符$nin
db.colls.find({j:{$nin: [2,4,6]}});
取模查询用字符$mod
db.colls.find( { a : { $mod : [ 10 , 1 ] } } )// where a % 10 == 1
$all查询
db.colls.find( { a: { $all: [ 2, 3 ] } } );//指定a满足数组中任意值时
$size查询
db.colls.find( { a : { $size: 1 } } );//对对象的数量查询,此查询查询a的子对象数目为1的记录
$exists查询
db.colls.find( { a : { $exists : true } } ); // 存在a对象的数据
db.colls.find( { a : { $exists : false } } ); // 不存在a对象的数据
$type查询$type值为bsonhttp://bsonspec.org/数 据的类型值
db.colls.find( { a : { $type : 2 } } ); // 匹配a为string类型数据
db.colls.find( { a : { $type : 16 } } ); // 匹配a为int类型数据
使用正则表达式匹配
db.colls.find( { name : /acme.*corp/i } );//类似于SQL中like
内嵌对象查询
db.colls.find( { “author.name” : “joe” } );
1.3.3版本及更高版本包含$not查询
db.colls.find( { name : { $not : /acme.*corp/i } } );
db.colls.find( { a : { $not : { $mod : [ 10 , 1 ] } } } );
sort()排序
db.colls.find().sort( { ts : -1 } );//1为升序2为降序
limit()对限制查询数据返回个数
db.colls.find().limit(10)
skip()跳过某些数据
db.colls.find().skip(10)
snapshot()快照保证没有重复数据返回或对象丢失
count()统计查询对象个数
db.students.find({‘address.state’ : ‘CA’}).count();//效率较高
db.students.find({‘address.state’ : ‘CA’}).toArray().length;//效率很低
group()对查询结果分组和SQL中group by函数类似
distinct()返回不重复值
Mongo db 与mysql 语法比较的更多相关文章
- mongo 与 传统mysql语法对比
MongoDB语法 MySql语法 db.test.find({'name':'foobar'})<==> select ...
- MongoDB(五)mongo语法和mysql语法对比学习
我们总是在对比中看到自己的优点和缺点,对于mongodb来说也是一样,对比学习让我们尽快的掌握关于mongodb的基础知识. mongodb与MySQL命令对比 关系型数据库一般是由数据库(datab ...
- mongo语法和mysql语法对比学习
我们总是在对比中看到自己的优点和缺点,对于mongodb来说也是一样,对比学习让我们尽快的掌握关于mongodb的基础知识. mongodb与mysql命令对比 关系型数据库一般是由数据库(datab ...
- mysql 和 mongo db 语法对比
本文描述了MySQL中的常用SQL语句在MongoDB中的写法,如果你长期使用MySQL而对MongoDB跃跃欲试,这篇简单的文章可以帮助你更快的进入角色.查询:MySQL:SELECT * FROM ...
- Mongodb与mysql语法比较
Mongodb与mysql语法比较 mongodb与mysql命令对比 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由 ...
- mongodb linux基本启动 基础增删改 mysql语法的对比
一.主流数据源类型 还存在自定义数据源以及REST接口数据,共6中数据源. 二.linux下启动连接数据库 进去mongodb的目录启动服务:mongo --host 192.168.320.826 ...
- mongodb和mysql语法对比
MySQL: SELECT * FROM user Mongo: db.user.find() —————————————— MySQl: SELECT * FROM user WHERE name ...
- Mongo db 简单介绍及命令笔记
首先来了解下什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为W ...
- mongo DB for C#
(1)Download the MongoDB C#驱动. http://www.nuget.org/packages/mongocsharpdriver/. (2) Add Reference to ...
随机推荐
- TFS (Team Foundation Server) 2013集成Maven构建
Team Foundation Server原生就支持跨平台的构建,包括Ant和Maven两种构建方式.通过配置构建服务器,连接TFS源代码库,可以实现持续集成构建,自动检测代码库健康状况,进而实现自 ...
- awk中NF的使用
统计机器中网络连接各个状态个数 netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 一下子不明白$NF是什么意 ...
- NETCore调用AD域验证
一.添加引用 System.DirectoryServices System.DirectoryServices.AccountManagement 二.验证代码 声明域 string domainN ...
- django系列8.3--django中间件实现登录验证(1)
中间件版的登录验证需要依靠session,所以数据库中要有django_session表. urls.py from django.conf.urls import url from app01 im ...
- kvm虚拟化之convirt集中管理平台搭建
情况说明: (1)本文采用OEL6.3x64操作系统,需要有KVM安装环境.(2)convirt2.1.1采用源码方式安装,convirt环境分别两部分,一部分是cms,用于管理kvm/xen虚拟主机 ...
- JAVA Double去掉科学计数"E"
当Double的值很大时,显示的结果会变成带E的科学计数法显示,在报表的数据显示的时候不方便阅读,需要去掉E,将原数据显示 public static void main(String[] args) ...
- LOJ#3084. 「GXOI / GZOI2019」宝牌一大堆(递推)
题面 传送门 题解 为什么又是麻将啊啊啊!而且还是我最讨厌的爆搜类\(dp\)-- 首先国士无双和七对子是可以直接搞掉的,关键是剩下的,可以看成\(1\)个雀头加\(4\)个杠子或面子 直接\(dp\ ...
- php性能优化二(PHP配置php.ini)
PHP优化对于PHP的优化主要是对php.ini中的相关主要参数进行合理调整和设置,以下我们就来看看php.ini中的一些对性能影响较大的参数应该如何设置. # vi /etc/PHP.ini (1) ...
- 基本项目框架搭建 sqlserver druid配置
1. 我的连接池采用的是阿里云的druid的连接池,工具是IDEA 框架是springboot+maven 以下是我的项目框架结构 2. pom 中配置 <?xml version=&quo ...
- datetime 模块
datetimo 模块和time模块类似,只不过直接帮你定好了格式 import datetime time =datetime.datetime.now() print(time,type(time ...