一文学会mongoose如何对mongoDB进行增删改查
参考文献
- 官网
- 官方指南
- 官方 API 文档
起步
- 安装
npm i mongoose
简单示例
const mongoose = require('mongoose') mongoose.connect('mongodb://localhost/test', { useMongoClient: true }) mongoose.Promise = global.Promise // 创建一个模型(就是在设计数据库) // MongoDB 是动态的,非常灵活,只需要在代码中设计数据库就可以了 // mongoose 这个包就可以让设计编写过程变的非常的简单 let Cat = mongoose.model('Cat', { name: String }) // 实例化一个 Cat let kitty = new Cat({ name: 'Zildjian' }) // 持久化保存 kitty 实例 kitty.save(err => { if (err) { console.log(err) } else { console.log('meov') } })
官方指南
设计 Scheme 发布 model
const mongoose = require('mongoose') const Schema = mongoose.Schema mongoose.connect('mongodb://localhost/test') // 设计文档结构 let userSchema = new Schema({ username: { type: String, required: true }, password: { type: String, required: true }, email: { type: String } }) // 将文档结构发布为模型 // mongoose.model 方法就是用来将一个架构发布为 model // 第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称,mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称(User → users) // 返回值:模型构造函数 let User = mongoose.model('User', userSchema)
增加数据
const mongoose = require('mongoose') const Schema = mongoose.Schema mongoose.connect('mongodb://localhost/test') let userSchema = new Schema({ username: { type: String, required: true }, password: { type: String, required: true }, email: { type: String } }) let User = mongoose.model('User', userSchema) // 增加数据 let admin = new User({ username: 'admin', password: '123456', email: 'admin@admin.com' }) admin.save(err => { if (err) { console.log('储存失败') } else { console.log('储存成功') } })
查询数据
// 查询所有数据 User.find({ username: '张三' }, (err, data) => { if (err) { console.log('查询失败') } else { console.log(data) } }) // 按照条件查询所有符合条件的数据 User.find({ username: '张三' }, (err, data) => { if (err) { console.log('查询失败') } else { console.log(data) } }) // 只查找符合条件的第一个,返回一个对象形式 User.findOne({ username: '张三' }, (err, data) => { if (err) { console.log('查询失败') } else { console.log(data) } }) // 或条件查询 User.findOne({ $or: [ { email: body.email }, { nickname: body.nickname } ] }, (err, data) => { if (err) { return res.status(500).send('Server Error') } })
删除数据
// 按照条件删除对应的数据 User.remove({ username: '张三' }, (err, data) => { if (err) { console.log('查询失败') } else { console.log(data) } }) // 根据条件删除一条数据 User.findOneAndRemove({ username: '张三' }, (err, data) => { if (err) { console.log('查询失败') } else { console.log(data) } }) // 根据 id 删除一条数据 User.findByIdAndRemove(id, [option], [callback])
更新数据
// 根据条件更新所有数据 User.findByIdAndUpdate('id', (err, data) => { if (err) { console.log('更新失败') } else { console.log(data) } }) // 根据指定条件更新一个 User.findOneAndupdate([conditions], [update], [options], [callback]) // 根据 id 更新一个 User.findByIdAndUpdate(id, { password: '123' }, (err, ret) => { if (err) { console.log('更新失败') } else { console.log('更新成功') } })