使用 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 引入 mongooseconst 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