学习视频
Node.js学习(一)介绍
Node.js学习(二)异步、缓存区、文件系统
Node.js学习(三)常用模块与网络爬虫
Node.js学习(四)网络服务器
Node.js学习(五)express框架
数据库
可视化工具:mongoVUE
- 什么是数据库?
数据库(database)是一个按照数据结构进行数据的组织、管理、存放数据的仓库。 - 关系型数据库
按照关系模型存储数据的数据库,数据与数据之间的关联非常密切,可以实现跨数据表查询数据,占用更少的硬盘实现更多数据存储。
T-SQL标准的结构化查询语言,是关系型数据库的通用查询语言。
常见的关系型数据库:MySQL SQL-Server acess …
结构:一台服务器=>数据库=>数据表=>数据行 - 非关系型数据库
不按关系模型存储数据的数据库,统称为nosql。
第一层含义,不是SQL,不是关系型数据库。
第二层含义:Not Only SQL,不仅仅是SQL。
结构:一台服务器=>数据库=>集合=>文档 - Mongodb
Mongodb是一个基于分布式文件存储的数据库,目前是世界上用的最多的非关系型数据库,也是最像关系型的非关系型数据库。
主要特点:
Ø 面向集合存储,易存储对象类型的数据
Ø 模式自由
Ø 支持动态查询
Ø 支持完全索引,包含内部对象
Ø 支持查询
Ø 支持复制和故障恢复
Ø 使用高效的二进制数据存储,包括大型对象(如视频等)
Ø 自动处理碎片,以支持云计算层次的扩展性
Ø 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言
Ø 文件存储格式为BSON(一种JSON的扩展,二进制+JSON)
Ø 可通过网络访问 - MongoDB可视化工具:mongovue
安装配置MongoDB
- 安装MongoDB软件
- 设置环境变量
找到安装目录,找到mongo命令所在位置 D:\Program Files\MongoDB\Server\4.0\bin
将命令位置添加到环境变量:
我的电脑-属性->高级系统设置->环境变量->修改PATH值,将安装目录添加到PATH中
MongoDB基础命令
在命令行中运行:mongo 进入数据管理模式
在数据库管理模式中只能执行数据库命令,不能执行其他命令
exit 退出数据库管理模式
常用命令
数据库命令
- 显示所有数据库列表
show dbs
- 创建数据库
use 数据库名
//如果数据库名不存在,则创建;如果数据库已存在,则进入
- 查看当前数据库
db
- 删除数据库
db.dropDatabase();
集合的命令
- 显示当前数据库中所有集合
show collections
- 创建集合
db.集合名.insert({});
//通常,在创建数据库时自动创建集合,不需要创建集合
- 删除集合
db.集合名.drop();
文档(数据)的操作
- 新增文档(数据)
db.集合名.insert({BSON数据})
db.集合名.save({BSON数据});
例如`db.user.insert({“name”:'admin",“password”:“123456”});
db.user.save({“name”:'lili",“password”:“654321”});
insert和save方法的区别:
.insert() 向集合中插入一条数据【推荐使用】
.save() 向集合中添加一条数据,如果集合中已经存在该数据则更新
2. 查询文档(数据)
db.集合名.find(); //查找当前集合中的所有数据
db.集合名.find({条件对象}); //符合条件的数据被查出来
db.集合名.findOne();
db.集合名.find.pretty();//将找到的数据以格式化的结果显示出来。
- 修改文档
db.集合名.update(查找对象,修改结果);
- 删除数据
db.集合名.remove({});//删除当前集合中的所有数据
db.集合名.remove({条件对象});//删除指定数据
注意:由于删除和更新操作会造成数据极大影响,所以一定要谨慎!
高级命令
- 按指令条件查询
//需求:查找到所有女明星
db.singer.find({"sex":"女"});
//SQL: select * from singer where sex="女"
- 大于
db.集合名.find({字段名:{$gt:值}});
//db.singer.find({"age":{$gt:50}});//需求:查找年龄大于50岁的所有数据
- 大于等于
db.集合名.find({字段名:{$gte:值}});
- 小于
db.集合名.find({字段名:{$lt:值}});
- 小于等于
db.集合名.find({字段名:{$lte:值}});
- 查询指定范围的数据
db.集合名.find({字段名:{$gt:小值,$lt:大值}});
7.$in子句
db.集合名.find({字段名:{$int:[数组值]}});
//例:db.singer.find({name:{$int:['刘德华','张学友']}});
8.按数组元素的个数查找
db.集合名.find({字段名:{$size:数量}});
//例:db.singer.find({work:{$size:1}});//查找只有一个代表作的歌手
- $or子句,查找多条件时,符合其中一个就找出来
db.集合名.find({$or:{字段名:值,字段名:值}});
- 排序sort()
db.集合名.find().sort({字段名:1,字段名:-1})
//1是升序(从小到大);-1降序(从大到小)
- 限定输出 limit() skip()
.limit(数字) //限定输出数据的条数
.skip(数字) //跳过指定的数据条数
扩展:这两个限定输出的语句主要用于分页
//需求:只查找年龄最大的三个人
db.singer.find().sort({"age":-1}).limit(3);
//需求:查看年龄在第三、第四、第五三个人
db.singer.find().sort({"age":-1}).skip(2).limit(3);
12.模糊查询
db.集合名.find({字段名:/值/});