mongodb
1. 关系型数据库 概念 , 常用的数据库有哪些?
2. 非关系型数据库 概念,常用数据库
3. mongodb 和 sql区别
1. sql 是 数据库 表 行
2. NoSql 是 数据库 集合 文档
4. bson是mongodb的数据存储格式
5. bson是json的超集
- 数据库功能是用来存储数据的。
- 数据库分为关系系数据库和非关系型数据库(nosql)
- 关系型数据库是由表和表之间的关系组成的,nosql是由集合组成的,集合下面是很多的文档。
- 非关系型数据库文件存储格式为BSON(一种JSON的扩展)。
6. mongodb数据库连接地址: mongodb://127.0.0.1:27017
准备工作
MongoDB官网地址:
https://www.mongodb.com/
MongoDB下载地址:
https://www.mongodb.com/download-center#community
对mongodb数据库的操作是通过执行命令来完成的,我的电脑里面这些命令安装在:
C:\Program Files\MongoDB\Server\4.0\bin
要执行这些命令,需要以管理员身份运行cmd。
打开开始菜单,找到命令提示符,在上面点击右键,选择以管理员身份运行。
要想执行mongodb的命令,需要cd到他的安装目录下面的bin文件夹下。
为了在dos窗口的任何目录下都能执行mongo的命令,需要先设置环境变量,因为计算机在执行命令的时候会在环境变量中找对应的命令。
-1.我的电脑上点击右键,选择属性
-2.找到并打开“高级系统配置”。
在接下来的页面中点击“高级系统配置”
-3.找到环境变量“path”,点击编辑
把自己的安装路径粘贴上去
例如C:\Program Files\MongoDB\Server\4.0\bin
然后保存。win7环境变量只有一行,在加之前要在前面加上分号隔开
创建文件夹( 4以上版本自带无需执行 )
我们之前安装的其实是数据服务器,通过数据库服务器可以建立很多个数据库,我们打算把新建的数据库放哪里呢?需要指定一个位置。
- 1、在d盘建立一个文件夹mongodb,并且建立子目录db和log.
- 2、在log目录下建立一个文件MongoDB.log ,后缀为.log.
d:\mongodb\db、d:\mongodb\log, 分别用来存放数据库文件和数据库日志文件.
- 3、把mongodb文件夹的只读属性去掉。
启动MongoDB
以管理员身份运行cmd.exe,进入dos命令界面,执行下列命令
mongod --storageEngine mmapv1 --dbpath “d:\mongodb\db” --logpath “d:\mongodb\log\MongoDB.log”
执行后,就挂起了,需要另外开命令窗口测试是否启动成功。
启动mongodb服务
NET START MongoDB
关闭服务和删除进程
先 ctrl+c
关闭服务:net stop MongoDB
MongoDB基础使用
数据库常用命令
1. Help查看命令提示
- help
- db.help()
- db.test.help()
- db.test.find().help()
2. 创建/切换数据库
- use music
3. 查询数据库
- show dbs
4. 查看当前使用的数据库
- db/db.getName()
5. 显示当前DB状态
- db.stats()
6. 查看当前DB版本
- db.version()
7. 查看当前DB的链接机器地址
- db.getMongo()
8. 删除数据库
- db.dropDatabase()
Collection集合操作
1. 创建一个集合
- db.createCollection("collName", {size: 20, capped: true, max: 100});
- db.collName.isCapped(); //判断集合是否为定容量
2. 得到指定名称的集合
- db.getCollection("account");
3. 得到当前db的所有集合
- db.getCollectionNames();
4. 显示当前db所有集合的状态
- db.printCollectionStats();
添加、修改与删除集合数据
1. 添加
db.users.save({name: ‘zhangsan’, age: 25, sex: true});
相当于:insert into users(name, age, sex) values(‘zhangsan’, 25, true)
2. 修改 第二个参数表示修改,第三个参数表示修改的条数,false一条,true,全部修改
db.users.update({age: 25}, {$set: {name: 'changeName'}}, false, true);
相当于:update users set name = ' changeName' where age = 25;
db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true);
相当于:update users set age = age + 50 where name = 'Lisi';
db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true);
相当于:update users set age = age + 50, name = 'hoho' where name = 'Lisi';
3. 删除
db.users.remove({age: 132});
集合数据查询
1. 查询所有记录
db.userInfo.find();
相当于:select* from userInfo;
2. 查询去重后数据(name是key)
db.userInfo.distinct("name");
相当于:select distict name from userInfo;
3. 查询age = 22的记录
db.userInfo.find({"age": 22});
相当于: select * from userInfo where age = 22;
4. 查询age > 22的记录
db.userInfo.find({age: {$gt: 22}});
相当于:select * from userInfo where age > 22;
5. 查询age < 22的记录
db.userInfo.find({age: {$lt: 22}});
相当于:select * from userInfo where age < 22;
6. 查询age >= 25的记录
db.userInfo.find({age: {$gte: 25}});
相当于:select * from userInfo where age >= 25;
7. 查询age <= 25的记录
db.userInfo.find({age: {$lte: 25}});
8. 查询age >= 23 并且 age <= 26
db.userInfo.find({age: {$gte: 23, $lte: 26}});
9. 查询name中包含 mongo的数据
db.userInfo.find({name: /mongo/});
//相当于%%
select * from userInfo where name like '%mongo%';
10. 查询name中以mongo开头的
db.userInfo.find({name: /^mongo/});
相当于: select * from userInfo where name like 'mongo%';
11. 查询指定列name、age数据
db.userInfo.find({}, {name: 1, age: 1});
相当于:select name, age from userInfo;
12. 查询指定列name、age数据, age > 25
db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});
相当于:select name, age from userInfo where age >25;
13. 按照年龄排序
升序:db.userInfo.find().sort({age: 1});
降序:db.userInfo.find().sort({age: -1});
select age from userinfo order by age DESC/ASC
14. 查询name = zhangsan, age = 22的数据
db.userInfo.find({name: 'zhangsan', age: 22});
相当于:select * from userInfo where name = 'zhangsan' and age = ’22';
15. 查询前5条数据
db.userInfo.find().limit(5);
相当于:select top 5 * from userInfo;
16. 查询10条以后的数据
db.userInfo.find().skip(10);
相当于:select * from userInfo where id not in (select top 10 * from userInfo);
17. 查询在5-15之间的数据
db.userInfo.find().limit(10).skip(5);
18. or与 查询
db.userInfo.find({$or: [{age: 22}, {age: 25}]});
相当于:select * from userInfo where age = 22 or age = 25;
19. 查询第一条数据
db.userInfo.findOne();
相当于:select top 1 * from userInfo;db.userInfo.find().limit(1);
20. 查询某个结果集的记录条数
db.userInfo.find({age: {$gte: 25}}).count();
相当于:select count(*) from userInfo where age >= 20;