mongoose 使用

官网:http://www.mongoosejs.net/docs/guide.html
一、初始化项目 npm init
二、安装 npm i mongoose ,推荐版本6 npm i mongoose@6.11.2

// 1、安装 mongoose
// 2、导入 mongoose
const mongoose = require('mongoose')// 如果连接成功后出现 strictQuery 的警告,设置 strictQuery 为 true 即可,均无任何影响。
mongoose.set('strictQuery', true);// 3、连接 mongodb 服务                      数据库的名称
mongoose.connect('mongodb://127.0.0.1:27017/mydata');// 4、设置回调
// 设置连接成功的回调  官方推荐 once 事件回调函数只执行一次,on会自动重连。
mongoose.connection.once('open', () => {console.log('连接成功');// 5、创建文档的结构对象// 设置集合中文档的属性以及属性值的类型let BookSchema = new mongoose.Schema({name: String,author: String,price: Number})// 6、创建模型对象     对文档操作的封装对象let BookModel = mongoose.model('books', BookSchema);// 7、新增BookModel.create({name: '唐诗',author: '李白',price: 9.9}, (err, data) => {  //此处如果 mongoose 7版本,则用 then.(),但无法执行 mongoose.disconnect()方法,原因未解决;if (err) {console.log(err);return;}// 输出插入后的文档对象console.log(data)// 8、关闭数据库连接 (项目运行过程中,不会添加该代码)// mongoose.disconnect();})
});
// 设置连接错误的回调
mongoose.connection.on('error', () => {console.log('连接失败');
});// 关闭数据库连接 (项目运行过程中,不会添加该代码)
mongoose.connection.on('close', () => {console.log('连接关闭');
});

运行命令:node .\01_链接数据库.js

以下简单介绍使用(数据类型、规则校验、删除、读取、条件设置、个性化读取):

// 1、安装 mongoose
// 2、导入 mongoose
const mongoose = require('mongoose')// 如果连接成功后出现 strictQuery 的警告,设置 strictQuery 为 true 即可,均无任何影响。
mongoose.set('strictQuery', true);// 3、连接 mongodb 服务                      数据库的名称
mongoose.connect('mongodb://127.0.0.1:27017/mydata');// 4、设置回调
// 设置连接成功的回调  官方推荐 once 事件回调函数只执行一次,on会自动重连。
mongoose.connection.once('open', () => {console.log('连接成功');// 5、创建文档的结构对象// 设置集合中文档的属性以及属性值的类型let BookSchema = new mongoose.Schema({name: {type: String,required: true  //必填,不能为空},author: {type: String,default: '匿名', //默认值},style: {type: String,enum: ['城市', '农村'] //枚举值},userName: {type: String,unique: true, //设置唯一值(重建集合才生效!)},price: Number})// 6、创建模型对象     对文档操作的封装对象   mongoose 会使用集合名称的复数,创建集合(如:book将成为books)let BookModel = mongoose.model('book', BookSchema);// 7、新增// BookModel.create({//     name: '王者荣耀',//     // author: '李白',//     style: '城市',//     userName: '西游记',//     price: 130// }, (err, data) => {  //此处如果 mongoose 7版本,则用 then.(),但无法执行 mongoose.disconnect()方法,原因未解决;//     if (err) {//         console.log(err);//         return;//     }//     // 输出插入后的文档对象//     console.log(data)//     // 8、关闭数据库连接 (项目运行过程中,不会添加该代码)//     // mongoose.disconnect();// })// 7、删除一条// BookModel.deleteOne({userName:'西游记222'},(err,data) => {//     if(err){//         console.log('删除失败··')//         return;//     }//     console.log(data)// })// 7、批量删除// BookModel.deleteMany({userName:'西游记'},(err,data) => {//     if(err){//         console.log('删除失败··')//         return;//     }//     console.log(data)// })// 7、更新文档  更新一条// BookModel.updateOne({userName:'西游记'},{userName:'西游记阿啦啦啦啦'}, (err, data) => {//     if (err) {//         console.log('更新失败··')//         return;//     }//     console.log(data)// })//   更新文档  批量// BookModel.updateMany({userName:'西游记'},{userName:'西游记阿啦啦啦啦'}, (err, data) => {//     if (err) {//         console.log('更新失败··')//         return;//     }//     console.log(data)// })// 7、读取单条// BookModel.findOne({author:'李白'}, (err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 批量读取// BookModel.find({author:'李白'}, (err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 读取所有// BookModel.find((err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 7、条件设置// 价格小于 20 的// BookModel.find({ price: { $lt: 10 } }, (err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 或者 条件// BookModel.find({ $or: [{ name: '王者荣耀' },{ name: '穿越火线' }  ]}, (err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 或者 且// BookModel.find({ $and: [{ name: '王者荣耀' }, { price: { $lt: 150 } }] }, (err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 7、正则匹配// BookModel.find({ name: /王/ }, (err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 不确定关键字,可能放在变量中,用new RegExp才能解析// BookModel.find({ name: new RegExp('王') }, (err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 7、个性化读取// 设置字段(只读取 name 和 author)// BookModel.find().select({ name: 1, author: 1 }).exec((err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 数据排序  小到大// BookModel.find().select({ name: 1, author: 1, price: 1 }).sort({ price: 1 }).exec((err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 数据排序  大到小 的 前三条数据// BookModel.find().select({ name: 1, author: 1, price: 1 }).sort({ price: -1 }).limit(3).exec((err, data) => {//     if (err) {//         console.log('读取失败··')//         return;//     }//     console.log(data)// })// 数据排序  大到小 的数据截取BookModel.find().select({ name: 1, author: 1, price: 1 }).sort({ price: -1 }).skip(1).limit(3).exec((err, data) => {if (err) {console.log('读取失败··')return;}console.log(data)})
});
// 设置连接错误的回调
mongoose.connection.on('error', () => {console.log('连接失败');
});// 关闭数据库连接 (项目运行过程中,不会添加该代码)
mongoose.connection.on('close', () => {console.log('连接关闭');
});


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部