MongoDB
数据库类型
- 关系型数据库
- 非关系型数据库
MongoDB简介
- mongodb 官网
- mongodb 中文
- mongodb教程
- MongoDB 是一个非关系型数据库,属于文档型数据库(NoSQL);
- 对 JavaScript 兼容较好,和 Node.js 结合最好
NoSQL简介
NoSQL(NoSQL = Not Only SQL ),意即”不仅仅是SQL”。
在现代的计算系统上每天网络上都会产生庞大的数据量。
这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理。 1970年 E.F.Codd’s提出的关系模型的论文 “A relational model of data for large shared data banks”,这使得数据建模和应用程序编程更加简单。
通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。
NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
MongoDB的安装
windows版本
参考地址:http://www.runoob.com/mongodb/mongodb-window-install.html
- 1 根据操作系统选择合适的安装程序(32位或64位)
- 2 直接安装程序
- 3 配置环境变量,通过命令:
mongod --version
看是否安装成功 - 4 注意:MongoDB最新版的安装包已经不再支持32位的windows操作系统了
1 | 解决mongodb安装时出错 “mongodb 无法启动此程序,因为计算机中丢失 api-ms-win-crt-runtime-l1-1-0.dll”,安装 vc_redist.x64.exe |
mac版本
参考地址:http://www.runoob.com/mongodb/mongodb-osx-install.html
MongoDB的启动与连接
- 1 通过命令:
mongod
启动 mongodb数据库服务(不要关闭) - 2 重新开启一个cmd,输入命令:
mongo
就可以连接到mongod服务了
1 | 1 在 C中创建 data文件夹, 在data文件夹中创建 db文件 |
1 | # 终端1 -- 启动服务 |
数据库存储路径的说明
- windows32位系统 安装MongoDB
- 注意:mongod 会在执行命令的磁盘根目录中查找
data/db
目录作为数据库文件存储路径 - 可以通过命令:
mongod --dbpath 路径
修改默认配置
1 | # 64位: |
MongoDB终端操作
数据库操作
以下的命令都是在mongo终端下完成
- 查看数据库
1 | # 注意:自己创建的数据库,如果数据为空,不会显示 |
- 切换(创建)数据库
1 | # 如果数据库存在,切换到该数据库, 如果数据库不存在,创建新的数据库 |
- 查看当前使用的数据库
1 | db |
- 查看当前数据库的集合
1 | show collections |
- 删除当前数据库
1 | db.dropDatabase() |
mongodb术语
- 数据库:一个项目会使用一个数据库,比如letao, manager等
- 集合:类似于表,一个数据库可以有很多集合,比如user存放学生信息,teacher存放老师的信息
- 文档:一条数据就是一个文档,一个集合可以存放多条数据,即一个集合可以存放多个老师的信息,每个老师的信息称为一条文档
- 字段:一条数据中的属性,就是字段,比如name,age等
插入数据(文档)
- 语法:
db.集合名称.insert({})
- 说明: 在 mongodb 中不需要提前创建”表”, 直接通过 db.表名称.inseret() 就可以往表中添加数据了
1 | # 插入一条 |
查询数据
- 语法:
db.集合名称.find()
1 | # 查询所有数据 |
修改数据
- 语法:
db.集合名称.updateOne(条件, 更新后的数据)
1 | # 修改name属性为jack的数据,将age改为20 |
删除数据
- 语法:
db.集合名称.deleteOne(条件)
1 | # 删除age为18的数据 |
MondoDB 查询语句
操作 | 格式 | 示例 | SQL语句 | |
---|---|---|---|---|
等于 | {} | db.col.find({ name :’jack’}) | where name = ‘jack’ | |
小于 | $lt | db.col.find({age: {$lt:18}}) | where age < 18 | |
小于或等于 | $lte | db.col.find({age: {$lte:18}}) | where age <= 18 | |
大于 | $gt | db.col.find({age: {$gt:18}}) | where age > 18 | |
大于或等于 | $gte | db.col.find({age: {$gte:18}}) | where age >= 18 | |
不等于 | $ne | db.col.find({age: {$ne:18}}) | where age != 18 |
在node中操作MongoDB
安装:
1 | npm install mongodb |
使用:
1 | /* |
数据增删改查
- 增加数据
1 | //添加单条 |
- 删除数据
1 | //删除单条数据 |
- 修改数据
1 | //修改单条数据 |
- 查询数据
1 | //查询 |
ObjectID
在MongoDB中,自动生成的_id,是一个ObjectID;
如果从数据库中获取的是一个带引号的字符串:”5b442e14d5827d4f6bbcba15”;
实际为’”5b442e14d5827d4f6bbcba15”‘ ;
1 | var ObjectID = require("mongodb").ObjectID; |
- 在MongoDB中,自动生成的_id,是一个ObjectID,并不是一个字符串或者数字;
var ObjectID = require("mongodb").ObjectID;
- 可以通过
new ObjectID(id);
来创建一个ObjectID; - 参数id可以是24字节十六进制字符串,12字节二进制字符串或数字。
事件相关
【Node.js中on和jQuery中的on没有关系;】