这几天学到了mongodb,于是就把mogodb和自己熟悉的mysql之间做一个对比,能更快的熟悉mogodb。
首先mogodb是非关系型数据库,也叫文档型数据库,是一种Nosql的数据库。而mysql是关系型数据库。
他们之间的名称对比如下
下面把常用的增删改查做一个对比。
操作名 | MySQL | Mongodb |
显示数据库列表 | show databases; | show dbs; |
进去库 | use dbname; | use dbname; |
显示表列表(集合列表) | show tables; | show collections; |
创建库 | create database name; | 无需单独创建,直接use进去 |
创建表(集合) | create table tname; | 无需单独创建,直接插入数据 |
删除表(集合) | drop table tname; | 首先进去该库,db.tname.drop(); |
删除库 | drop database dname; | 首先进入该库,db.dropDatabase(); |
插入记录 | insert into tname(id) value(2); | db.tname.insert({id:2,"name":"测试"}); |
删除记录 | delete from tname where id =2; | db.tname.remove({id:2}); |
修改/更新记录 | update tname set id = 3 where id=2; | db.tname.update({id:2},{$set:{id:3}},false,true); |
查询所有记录 | 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 and name = "steve"; | db.tname.find({id:2,name:"steve"}); |
条件查询 | select * from tname where id=2 or name = 'steve' | db.tname.find({$or:[{id:2},{name:'steve'}]}); |
条件查询 | select * from tname limit 1; | db.tname.findOne(); |
模糊查询 | select * from tname where name like '%set%' | db.tname.find({name:/set/}); |
模糊查询 | select * from tname where name like 'set%' | db.tname.find({name:/^set/}); |
查询表中记录数 | select count(id) from tname | db.tname.count(); |
获取有条件的记录数 | select count(id) from tname where id=2; | db.tname.find({id:2}).count(); |
正序查询 倒叙查询 | select * from tname order by id; select * from tname order by id desc; | db.tname.find().sort({id:1}); db.tname.find().sort({id:-1}); |
对以上的补充:
1.db.collection.update( criteria, objNew, upsert, multi );
update()接受的四个参数含义如下:
criteria : update的查询条件哪些记录需要更新,类似于SQL update语句的where子句。
objNew : update的对象和一些更新的操作符如$,$inc等等,也可以理解为SQL update语句的set子句。
upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
2.group分组
mysql中是 select avg(price) from goods group by cate_id;
mongodb中是
db.goods.aggregate([ { $group : {_id : "$cate_id", num_tutorial : {$avg : "$price"}} } ]);