一、可视化工具
我这里使用的是MongoDB Compass,官网自行下载安装即可,界面如下:
点击下面即可输入语句操作
二、数据库操作
首先说一下mongodb与mysql的区别:
MYSQL | MongoDB | |
数据库类型 | 关系型数据库, 存储的是结构化的表格数据 | 非关系型数据库(nosql),文档型数据库,存储的是文档型数据(JSON格式),数据具备自述性,呈现分层的树状数据结构,数据结构由键值对组成 |
查询语言 | 本文介绍 | 本文介绍 |
数据模式 | 需要预先定义字段 | 动态模式,同一个集合里的文档不需要有相同的字段和结构 |
索引 | 可以对表中的列建立索引 | 可以对任何属性建立索引 |
延迟 | 延迟相对较高 | 写入操作有较低的延迟,非常适合实时应用 |
可靠性 | 有完整的事务支持 | 不支持事务操作 |
扩展性和性能 | 使用垂直扩展的架构 | 使用可水平扩展的架构 |
占用空间 | 占用空间小 | 占用空间大 |
数据库语句:
1.创建使用数据库:如果已有则切换到此,如果没有则自动创建
use demo
2.删除数据库
db.dropDatabase()
3.创建集合
db.createCollection('student')
4.删除集合
db.student.drop()
#sql:
drop table student;
5.插入
#插入一条数据
db.student.insertOne(
{ "name" : "John", "age": 30 }
)
#插入多条数据
db.student.insertMany(
[{ "name" : "Alice", "age": 25 }, { "name" : "Jack", "age": 17 }]
)
#插入一条或多条数据
db.student.insert(
[{ "name" : "Alice", "age": 25 }, { "name" : "Jack", "age": 17 }]
)
#sql
INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3);
6.查询
(1)查询所有数据
mongo: db.student.find();
sql: select * from student;
(2)查询指定
db.student.find({"name": 'John'})
select * from student where name='John'
(3)查询年龄大于23的记录
注:关系运算符 $gt:> 、 $lt:< 、 $gte:>= 、 $lte:<= 、 $ne: !=
db.student.find({"age": {"$gt": 23}})
select * from student where age>23;
(4)and or
# and or
db.student.find({"name": "John", "age": 30})
select * from student where name=John and age=30;
db.student.find({"$or": [{"name": "John"}, {"age": 30}]})
select * from student where name=John or age=30;
(5)in not in
#in
db.student.find({"age": {"$in": [30, 25]}})
select * from student where age in (25,30);
#not in
db.student.find({"age": {"$nin": [30, 25]}})
select * from student where age not in (30, 25);
(6)包含,模糊匹配
#查询包含值的数据
db.student.find({"name": /值/})
select * from student where name like "%值%";
注:/就相当于%,使用模糊匹配时,值不能有双引号
#查询以某个值开头的数据
db.student.find({"name": /^值/})
select * from student where name like "值%";
#查询以某个值结尾的数据
db.student.find({"name": /值$/})
select * from student where name like "%值";
(7)升序 降序
db.student.find().sort({"age": 1})
select * from student order by age asc
db.student.find().sort({"age": -1})
select * from student order by age desc
(8)count
db.student.count();
select count(*) from student
(9)去重
去重
db.student.distinct('name');
select distinct name from student;
(10)limit
db.student.find().limit(10);
select * from student limit 10;
(11)查询 10 条以后的数据
db.student.find().skip(10)
查询6-10条数据: 执行顺序先执行skip(),然后执行 limit()。
db.student.find().limit(10).skip(5)
select * form student limit 5,5
(12)聚合求一列平均值
db.student.aggregate({$group:{_id:null,age:{$avg:"$age"}}})
7.更新修改
db.student.update({"键名":"值"},{"要修改的键":"要修改的值"})
注:只会修改第一条匹配条件的记录
update student set 字段名 = 值 where id=值
修改多条数据
db.student.update({"键名":"值"},{$set:{"要修改的键":"要修改的值"}},{multi:true})
update student set 字段名 = 值 where id=值
8.删除
删除所有数据
db.student.remove({});
delete from student;
根据条件删除
db.student.remove({"age":30});
delete from student where age=30;