这几天学到了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"}} } ]);
版权声明:本文为u013252047原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。