mongoose基本使用
1.什么是Mongoose?
- Mongoose和MySQL的Sequelize一样, 都是NodeJS中操作数据库的对象模型工具
- Mongoose使用面向对象的思想对原生的mongoDB命令进行了封装
http://www.mongoosejs.net/
https://mongoosejs.com/
2.Mongoose和MongoDB映射关系
在Mongoose中JS中的一个模型就对应数据库中的一个集合
在Mongoose中JS中的一个对象就对应集合中的一个文档
在Mongoose中JS中的一个对象的属性就对应文档的一个字段
3.使用:
3.1 初始化一个nodeJS项目:
文件位置的控制台中输入:npm init --y
创建项目,生成一个package.json文件
3.2 安装mongoose
文件位置的控制台中输入:npm install mongoose
3.3 使用mongoose
// 1. 在要使用的.js文件中导入mongoose
const mongoose = require('mongoose')
// 2. js文件中链接数据库
mongoose.connect('mongodb://127.0.0.1:27017/mongooseTest') // 新建一个mongooseTest数据库
// 3. 监听链接成功还是失败
let db = mongoose.connection;
db.on('error', (err)=>{ // 链接失败
console.log(err, "链接失败");
});
db.once('open', function() { // 链接成功
// we're connected!
console.log("链接成功");
});
db.once('open', function() { // 断开链接
// we're connected!
console.log("断开链接");
});
4.基本操作
1).定义集合中存储数据规则
cosnt 规则名称 = new Schema({
name: String,
age: Number
});
2).利用规则创建一个集合【模型】
let User = mongoose.model('User', 规则名称);
3).创建一个文档
let u = new User({
name:'zs',
age:18
});
4).操作集合和文档
只要是通过Mongoose定义的模型, 那么Mongoose就会自动给这个模型添加很多操作集合和文档的方法
以后我们就可以直接通过模型操作集合, 通过模型创建出来的对象操作数据。
- 注意:具体的增删改查操作见:使用mongoose操作MongoDB数据库
5.完整js代码
// 1.导入mongoose
const mongoose = require('mongoose')
/*
2.链接数据库
mongodb://MongoDB服务器IP地址:MongoDB服务器端口号/需要打开的数据库名称
* */
mongoose.connect('mongodb://127.0.0.1:27017/mongooseTest') // 新建一个mongooseTest数据库
// 3.监听打开成功还是失败
let db = mongoose.connection;
db.on('error', (err)=>{ // 链接失败
console.log(err, "链接失败");
});
db.once('open', function() { // 链接成功
// we're connected!
console.log("链接成功");
});
db.once('open', function() { // 断开链接
// we're connected!
console.log("断开链接");
});
// 4.操作数据库
// 4.1 定义集合中存储数据规则
const userSchema = new mongoose.Schema({ // 说明集合中要存储的字段,字段类型
name: String,
age: Number
});
// 4.2 利用规则创建集合
// 注意点:只要创建好了模型(User)集合,那么以后就可以使用User来操作这个集合
// 注意点:mongoose会自动将我们制定的集合名称变为复数(users),数据库中的集合名称不是User而是users
let User = mongoose.model('User', userSchema);
// 4.3 利用集合创建文档
// 注意点:只要创建好了对象(u),那么以后就可以使用对象来操作文档
let u = new User({name: 'Ge', age: 13});
// 4.4 操作文档
u.save((err, product)=>{
if (!err) { // 保存文档成功
console.log('保存文档成功', product)
}
})