使用 mongoose 操作 mongodb 的测试文件
- 连接数据库
1.1 引入 mongoose
1.2 连接指定的数据库(URL 只有数据库是变化的)
1.3 获取连接对象
1.4 绑定连接完成的监听(用来提示连接成功)- 得到对应特定集合的 Model
2.1 字义 Schema(描述文档结构)
2.2 定义 Model(与集合对应,可以操作集合)- 通过 Model 或其实例对集合数据进行 CRUD 操作
3.1 通过 Model 实例的 save() 添加数据
3.2 通过 Model 的 find()/findOne() 查询多个或一个数据
3.3 通过 Model 的 findByIdAndUpdate() 更新某个数据
3.4 通过 Model 的 deleteOne() 删除匹配的数据
- */
下载 mongoose
依赖包
npm install --save mongoose
下载 md5
加密依赖包
npm install --save blueimp-md5
下面的代码位置:
db_test.js
// 引入 md5 依赖
const md5 = require('blueimp-md5')
1. 连接数据库
// 1.1 引入 mongoose
const mongoose = require('mongoose')
// 1.2 连接指定的数据库(URL 只有数据库是变化的)mongoose.connect('mongodb://localhost:27017/zp_test', {useNewUrlParser: true})
// 1.3 获取连接对象
const conn = mongoose.connection
// 1.4 绑定连接完成的监听(用来提示连接成功)conn.on('connected', function () {console.log('数据库连接成功!')
})
2. 得到对应特定集合的 Model
// 2.1 字义 Schema(描述文档结构)const userSchema = mongoose.Schema({username: {type: String, require: true}, // 用户名
password: {type: String, required: true}, // 密码
type: {type: String, required: true} // 用户类型: 求职者 / 老板
})
// 2.2 定义 Model(与集合对应,可以操作集合)const UserModel = mongoose.model('users', userSchema) // 集合名:users
3. 通过 Model 或其实例对集合数据进行 CRUD 操作
3.1 通过 Model 实例的 save() 添加数据
function testSave() {
// user 数据对象
const user = {
username: 'mandy',
password: md5('1234'),
type: '求职者'
}
// 创建 Model 实例
const userModel = new UserModel(user)
// 或者像下面这样添加数据
// const userModel = new UserModel({username: 'Tom', password: md5('3333'), type: '老板'})
// 保存到数据库
userModel.save(function (err, user) {console.log('save', err, user)
})
}
// testSave()
3.2 通过 Model 的 find()/findOne() 查询多个或一个数据
function testFind() {
// 查找多个
UserModel.find(function (err, users) {// 如果有匹配返回一个[user, user...], 如果没有一个匹配的返回[]
console.log('find()', err, users)
})
// 查找一个
UserModel.findOne({_id: '5cdf99ebf3539334948ae2c8'}, function (err, user) { // 如果有匹配返回的是一个 user
console.log('findOne()', err, user)
})
}
// testFind()
3.3 通过 Model 的 findByIdAndUpdate() 更新某个数据
function testUpdate() {UserModel.findByIdAndUpdate({_id: '5cdfacc55684652a08b49014'}, {username: '一个老板'}, function (err, user) {console.log('findByIdAndUpdate()', err, user)
})
}
// testUpdate()
3.4 通过 Model 的 remove() 删除匹配的数据
function testDelete() {UserModel.deleteOne({_id: '5cdf9d761a1c050c70bc0d09'}, function (err, result) {console.log('deleteOne()', err, result)
})
}
// testDelete()
运行:
node db_test.js
可以在 mongodb 的可视化工具中查看效果.
可视化工具
webstorm 中的 Mongo Plugin 插件
Robo 3T
下载地址: https://robomongo.org/download