天天看點

MongoDB與SQL語句對比

MongoDB與SQL語句對比

1 表操作

建立表

create table user( 
	id int not null auto_increment,
	user_id varchar(30),
	age number,
	status char(1),
	primary key(id) );
           
db.user.insertOne({
    user_id:"nml",
    age:23,
    status:"A"
})
-- 或者
db.createCollection("user")
           

修改表

db.user.updateMany(
	{},
	{$set:{join_date:new Date()}})
           

删除列

alter table user drop column join_date
           
db.user.updataeMany(
	{},
	{$unset:{"join_date":""}})
           

加索引

create index index_user_id_asc on user(user_id)

db.user.createIndex({user_id:1})
           
create index index_user_id_asc_age_desc on user(user_id,age desc)

db.user.createIndex({user_id:1,age:-1})
           

删除表

drop table user 

db.user.drop()
           

2 查詢操作

select * from user
db.user.find()

select id,user_id,status from user
db.user.find({},{user_id:1,status:1})

select user_id,status from user
db.user.find({},{user_id:1,status:1,_id:0})

select * from user where status = "A"
db.user.find({status:"A"})

select user_id,status from user where status="A"
db.user.find( {status:"A"},{user_id:1,status:1,_id:0} )
	
select * from user where status != "A"
db.user.find({status:{$ne:"A"}})

select * from user where status = "A" and age = 23
db.user.find({status:"A",age:23})

select * from user where status = "A" or age = 23
db.user.find({$or:[{status:"A"},{age:23}]})

select * from user where age>20 and age<30
db.user.find({age:{$gt:20,$lte:30}})

select * from user where user_id like "abc%"
db.user.find({user_id://^abc/})
db.user.find({user_id:{$regex:/^abc/}})

select * from user where status = "A" order by user_id asc/desc
db.user.find({status:"A"}).sort({user_id:1/-1})

selet count(*) from user
db.user.count()
db.user.find().count()

select count(user_id) from user
db.user.count({user_id:{$exists:true}})
db.user.find({user_id:{$exists:ture}}).count()

select count(*) from user where age>20
db.user.count({age:{$gt:20}})
db.user.find({age:{$gt:20}}).count()

select distinct(status) from user
db.user.aggregate([{$group:{_id:"$status"}}])
db.user.distinct("status")

select * from user limit 1
db.user.find().limit(1)

select * from user limit 3 skip 10
db.user.find().limit(3).skip(10)
...