MongoDB基本增删改查
一、 在Node中如何操作 MongoDB数据
1.使用官方的 mongodb 来操作:https://github.com/mongodb/node-mongodb-native
2.使用第三方库 mongoose:https://mongoosejs.com/
3.安装:
npm i mongoose
4. 引入需要的包
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true}); mongoose.Promise = global.Promise; var Cat = mongoose.model('Cat', { name: String }); for (var i = 0; i < 10; i++) { var kitty = new Cat({ name: 'Zildjian' }); kitty.save(function (err) { if(err) { console.log(err) } else { console.log('meow') } }); }
二、 MongoDB 数据库的基本概念
1. 可以有多个数据库 (MySQL叫表,,这里叫集合)
2 一个集合中可以有多个文档(表记录)
3. 文档结构很灵活,没有任何限制
4. MongoDB 非常灵活,不需要像 MySql 一样先创建数据库、表、设计表结构
5. 在这里只需要:当你需要插入数据的时候,只需要指定哪个数据库的哪个集合操作就可以
6. 一切都由MongoDB来帮你自动完成建库建表这件事
三、官方指南
1. 设计Schema 发布Model
var mongoose = require('mongoose') var Schema = mongoose.Schema
2. 连接 MongoDB 数据库,localhost代表本机数据库,
// test是数据库的名字,它可以是还未存在的
// 当你插入第一条数据之后就会被自动创建出来
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});
3..设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
// 约束的目的是为了保证数据的完整性,不要有脏数据
var userSchema = new Schema({ username: { type: String, require: true // 必须有 }, password: { type: String, require: true }, email: { type: String } });
4. 将文档结构发布为模型
// mongoose.model 方法就是用来将一个架构发布为 model
// 第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
// mongoose 会自动将大写名词的字符串生成 小写复数 的集合名
// 例如这里的User最终会变为users集合名称
// 第二个参数:架构 Schema
// 返回值:,模型构造函数
var User = mongoose.model('User', userSchema)
5. 当我们有了模型构造函数之后,就可以使用这个构造函数对users集合中的数进行操作(增删改查)
增加数据
var admin = new User({ username: 'admin', password: '123456', email: '2352404495@qq.com' }) admin.save(function (err, ret) { if (err) { console.log('保存失败') } else { console.log('保存成功') console.log(ret) } })
查询:
查全部:
`User.find(function (err, ret) { if (err) { console.log('failed') } else { console.log(ret) } })` + 按条件查一个,条件可以有多个: `User.findOne({ username: 'chenxiao' }, function (err, ret) { if (err) { console.log('failed') } else { console.log(ret) } })` //返回的是对象,如果把findOne换成find则会返回数组
无条件查询一个,结果是第一条:
User.findOne(function (err, ret) { if (err) { console.log('failed') } else { console.log(ret) } })
删除数据
User.remove({ username: 'admin' }, function (err, ret) { if (err) { console.log('删除失败') } else { console.log('success') console.log(ret) } })
更新数据
User.findByIdAndUpdate('5ca44683632b0b27c8dacf0c', { password: '154822' }, function (err, ret) { if (err) { console.log('failed'); } else { console.log('success'); } })