MongoDB和Node
MongoDB和Node(一)
一, 连接
需要依赖Node.js第三方包mongoose
启动服务(同msql,SqlServer等): net start(stop) mongoDB
连接(创建)数据库:
- ```JavaScript
// 1.mongodb: 是芒果数据库的协议规则
// 2.connect返回的是promise对象
// 3.playgroud是数据库名称,没有则会新建,和创建文件一样
const mongoose = require(‘mongoose’)
mongoose.connect(‘mongodb://localhost/playgroud’).then(()=>console.log('数据库连接成功')) .catch(err=>console.log('数据库连接失败',err))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## 二,增删改查
> 关于数据库的操作都是异步操作 异步api有回调函数和promise两种方式
>
> 前端里异步都可以用promise 这些方法都返回promise对象
### 1. 创建集合
- 第一步:对集合设定规则(设置属性字段)
- 第二步:使用规则创建集合
```JavaScript
// 传入的对象就是集合属性(表字段)
const couresSchema = new mongoose.Schema({
name: String,
author: String,
isPublished: Boolean
})
// 返回的是构造函数,通过构造函数里的各种方法操作集合的数据
const Course = mongoose.model('Course', couresSchema)
- ```JavaScript
2. 创建文档
数据库没有数据就不会显示
_id是唯一标识
创建集合实例
调用实例对象下的save方法将数据保存到数据库中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19// 方式一:方法调用生成
// 实例化上面的构造函数
const course = new Course({
name: 'node',
author: 'why',
isPublished: true
})
course.save()
// 方式二:通过构造函数方法初始化
// 回调函数方式
Course.create({name: '前端',author: 'pink',isPublished: false}, (err, res) => {
console.log(err);
console.log(res);
})
// promise方式
Course.create({ name: '前端', author: 'pink', isPublished: false })
.then(doc=>console.log(doc))
.catch(err=>console.log(err))
3. 数据库导入数据
mongoimport -d 数据库名称 -c 集合名称 -file 要导入的数据文件
导入需要配置环境变量
4. 查询文档
find() 返回的是数组 findOne() 返回的是单个数据
1 | const userSchema = new mongoose.Schema({ |
$gt 大于 $lt 小于 $in 包含 条件查询也是通过对象参数的方式
1 | // 查询年龄大于19小于23的用户数据 |
查询多个字段
1 | // 查询所有用户的姓名和年龄 默认带有id |
排序
1 | // 将查询出的年龄按时间排序 (默认升序) |
skip跳过多少条数据,limit限制查询数量 (常用于分页)
1 | // 跳过了前两条数据,只查询一条 |
5. 删除文档
1 | // 1. 删除单个 |
6. 更新文档
1 | // 更新单个 {查询条件} , {要修改的值} (匹配到多个,只会更新第一个) |