在Node中如何操作MongoDB数据库
1. 使用官方的 mongodb
包来操作
https://github.com/mongodb/node-mongodb-native
2. 使用第三方mongoose来操作MongoDB数据库
第三方包: mongoose
基于 MongoDB官方的 mongodb
包再一次做了封装。
网址:mongoosejs.com
mongoose
- 官网:http://mongoosejs.com/
- 官网指南:http://mongoosejs.com/docs/guide.html
- 官网API文档:http://mongoosejs.com/docs/api.html
初识:
♦️ 创建一个模型,就是在设计数据库。
♦️ MongoDB是动态的,非常灵活,只需要在代码中设计数据库即可。
♦️ mongoose这个包可以让你的设计编写过程变得简单。
🌰:持久化存储数据
var Cat = mongoose.model('Cat', { name: String });
for (var i=0; i<10; i++) {
var kitty = new Cat({ name: '喵喵' + i});
kitty.save(function(err) {
if (err) {
console.log(err);
} else {
console.log('meow');
}
});
}
可以像写 js 代码一样,将很多条数据直接存入到数据库中。
开始
安装:
npm i mongoose
使用:
- 引包
- 连接数据库 (指定连接的数据库不需要存在,当你插入第一条数据之后就会被自动创建出来)
- 设计集合结构(表结构)
- 将文档结构发布为模型
mongoose.model
方法就是用来将一个架构发布为 model
第一个参数:传入一个大写名词字符串,生成小写复数的集合名称
(例如这里的 User 最终会变为 users 集合名称) - 当我们有了模型构造函数之后,就可以使用这个构造函数对 users 集合中的数据为所欲为了……
//引包
var mongoose = require('mongoose');
var Schema = mongoose.Schema
//连接数据库
mongoose.connect('mongodb://localhost/test',{ useNewUrlParser: true })
//连接状态提示
var db = mongoose.connection;
db.on("error", function (error) {
console.log("数据库连接失败:" + error);
});
db.on("open", function () {
console.log("数据库连接成功");
});
//设计表结构
var userSchema = new Schema({
username: {
type: String,
required: true //必须有
},
password: {
type: String,
required: true
},
email: {
type: String
}
})
//将文档结构发布为模型
var User = mongoose.model('User', userSchema)
//进行操作(增删改查)
User. ···
新增数据
Model.insertMany()
User.insertMany({
username: "abc",
password: "123",
email: "abc@163.com"
}, function (err, data) {
if(err) {
console.log("新增失败");
} else {
console.log(data);
}
})
也可以用
.save()
方法新增数据。
查询数据
Model.find()
Model.findById()
Model.findOne()
🌰:
- 查询全部:
User.find(function(err, data){
if(err) {
console.log("查询失败");
} else {
console.log(data);
}
})
- 按条件查询:
User.find({
username: "zhangsan"
},function(err, data){
if(err) {
console.log("查询失败");
} else {
console.log(data);
}
})
即便得到的只有一条数据,.find() 也返回一个数组。如果想直接返回对象:
.findOne()
,如果有多条数据,仅返回第一条。
删除数据
Model.deleteMany()
Model.deleteOne()
Model.findByIdAndDelete()
Model.findByIdAndRemove()
Model.findOneAndDelete()
Model.findOneAndRemove()
根据条件删除,一般是 _id ,因为唯一。
User.deleteOne({
username: "zhangsan"
},function(err, data){
if(err) {
console.log("删除失败");
} else {
console.log(data);
}
})
更新数据
Model.findByIdAndUpdate()
Model.findOneAndUpdate()
Model.updateMany()
Model.updateOne()
User.findByIdAndUpdate("5d79d25fef20e2207741bdda", {
password: "root"
}, function(err, data)
if(err) {
console.log("更新失败");
} else {
console.log(data);
}
})
User.findOneAndUpdate({
_id: "5d79d25fef20e2207741bdda",
}, {
"$set": {
"password": "root"
}
}, {
"new": true
}, function (err, data) {
if (err) {
console.log("更新失败");
} else {
console.log(data);
}
})
🔗 相关链接: