天天看點

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