天天看点

MongoDB vs MySQL 基本语句

以常见user表为例 

MongoDB MySQL
术语
数据库 database database
数据库表 集合 collection table
数据记录行 文档 document row
数据字段 域 field column
索引 index index
对表/集合的操作
删除 db.user.drop() drop 
增加一列 db.getCollection('user').insert({name:'哈哈',age:2,email:'[email protected]'}) alter table user add column email varchar(20)
对记录的操作语句
新增一条

db.getCollection('user').insert({name:'哈哈',age:2})

db.getCollection('user').insertOne({name:'哈哈',age:2})

insert into user(userid,name,age)values(1,'张三',12)
新增多条 db.getCollection('user').insertMany([{name:'哈1',age:2}, {name:'哈2',age:2}]) insert into user(userid,name,age)values(1,'张1',12),(2,'张2',12)
删除条 db.getCollection('user').remove({name:'haha'}) delete from user where userid = 1
修改

db.getCollection('user').update({name:'哈哈'}, {$set:{name:'haha',age:34}},1,1)

四个参数

1、查询条件

2、操作

3、如果没有符合条件是否新增,1新增,0默认不增

4、如果有多条符合条件是否全部改变,1全改,0按默认书序只改第一条

db.getCollection('user').updateOne({name:'哈哈'}, {$set:{name:'haha',age:34}})

update user set name = 'haha', age = 22 where name ='张三'

更新所有符合条件的数据

db.getCollection('user').updateMany({name:'哈哈'}, {$set:{name:'haha',age:34}})

更新所有符合条件的数据

查询所有

db.getCollection('user').find()

db.getCollection('user').find({})

select * from user
查询特定列

db.getCollection('user').find({},{age:1,name:1})

db.getCollection('user').find({},{age:0,name:0}); 排除这些列

第一个{}中指定查询条件

第二个{}中指定查询的列

select age,name from user
查询条件 等于

db.getCollection('user').find({name:'张三'})

db.getCollection('user').find({name:{$eq:'张三'}});

查询所有符合条件的数据,只显示有数据的列

db.getCollection('user').findOne({name:'张三'})

db.getCollection('user').findOne({age:{$eq:22}})

按默认顺序,查询一条符合条件的数据,只显示有数据的列

select * from user where id = 1
查询条件 不等于 db.getCollection('user').find({age:{$ne:16}}); select * from user where age != 16
查询条件 模糊查询 db.getCollection('user').find({name:/哈/}) select * from user where name like'%哈%'
查询条件 大于 db.getCollection('user').find({age:{$gt:16}}); select * from user where age >16
查询条件 大于等于 db.getCollection('user').find({age:{$gte:16}}); select * from user where age >=16
查询条件 小于 db.getCollection('user').find({age:{$lt:16}}); select * from user where age <16
查询条件 小于等于 db.getCollection('user').find({age:{$lte:16}}); select * from user where age <=16
查询条件 且 db.getCollection('user').find({name:'张三',age:22}) select * from user where name ='张三' and age = 22
查询条件 或 db.getCollection('user').find({$or:[{name:'张三'},{age:22}]}); select * from user where name = '张三' or age = 22
查询条件 既不也不 db.getCollection('user').find({$nor:[{name:'张三'},{age:22}]}); select * from user where name != '张三' and age != 22
查询条件 包含(且) db.getCollection('user').find({name:{$all:[/张三/,/哈/]}}) select * from user where name like '%张三%' and name like '%哈%'
查询条件 包含(或) db.getCollection('user').find({name:{$in:['张三',/哈/]}}) select * from user where name in('张三', '%哈%')
查询条件 不包含(且) db.getCollection('user').find({name:{$nin:['张三',/哈/]}}) select * from user where name not like '%张三%' and name not like '%哈%'
查询条件 存在

db.getCollection('user').find({address:{$exists:1}}); 存在

db.getCollection('user').find({address:{$exists:0}}); 不存在

查询条件 排序

db.getCollection('user').find().sort({age:1});升序

db.getCollection('user').find().sort({age:-1});降序

select * from user order by age asc

select * from user order by age desc

查询条件 去重 db.getCollection('user').distinct("name"); select distinct name from user
分页 从n条开始,查询m条 db.getCollection('user').find().skip(n).limit(m) select * from user limit n,m
查询条件 数量 db.getCollection('user').find({name:'张三'}).count(); select count(*) from user where name ='张三'
聚合查询 db.getCollection('user').aggregate([{$group:{_id:'$age',num:{$sum:1}}}]) select age,count(1) from user group by age
聚合查询
查询条件 distinct db.getCollection('user').distinct("name"); select distinct name from user