使用mongoose第三方模块
mongoose是mongoDB的一个对象模型工具,是基于node-mongodb-native开发的mongoDB的nodejs驱动,可以在异步的环境下执行。同时它也是针对mongoDB操作的一个对象模型库,封装了mongoDB对文档的一些增删改查等常用方法,让nodejs操作mongoDB数据库变得更加容易。
安装与使用
安装
npm install mongoose --save
使用
//1.引入mongoose
let mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/student');
//2.监听各种状态
let db = mongoose.connection;
db.on('error',() => {
console.log('连接失败!');
})
db.once('open',function(){
//we're connection
console.log('连接成功');
});
db.once('close',function(){
//we're connection
console.log('数据库断开成功');
});
终端打印“连接成功”,则说明连接数据库成功
有何优势?
mongoose提供了几种新的对象
1.schema模式对象:定义约束了数据库的文档结构
2.Model: 作为集合中所有文档的表示,相当于mongodb数据库中的collection
3.Document: 表示集合中的具体文档
如何使用新的对象对数据库进行操作
//2.创建schema对象,初始化创建的文档结构
let Schema = mongoose.Schema;
let personSchema = new Schema({
name:String,
age: Number,
sex: {
type:String,
default: '男'
},
chat: String
})
//3.创建Model对象,实例化一个模板
let personModle = mongoose.model("person",personSchema)
//4.插入文档
personModle.create({
name:'周杰伦',
age: 40,
sex: '男',
chat: "jay1997"
},(err) => {
if (!err){
console.log("insert success!")
}else{
console.log(err)
}
});
personModle.create({
name:'张学友',
age: 40,
sex: '男',
chat: "xueyoulalala"
},(err) => {
if (!err){
console.log("insert success!")
}else{
console.log(err)
}
})
打印信息
>连接成功
>insert success!
>insert success!
插入成功,在数据库中能够看到对应的数据
增查
//通过Model对象的creat函数,可以增加一个或多个文档对象
personModle.create([
{name:'阿卡丽',age:'19',sex: '女',chat:'akari1997'},
{name:'卡沙',age:'19',sex: '女',chat:'kasha1997'},
{name:'德莱厄斯',age:'25',sex: '男',chat:'adadadwf'},
{name:'潘森',age:'23',sex: '男',chat:'gadofwar'},
{name:'压缩',age:'21',sex: '男',chat:'eeeeeeee'},
],(err) => {
if (!err){
console.log("insert success!")
}else{
console.log(err)
}
})
//通过moduel对象的find()函数,查找所有数据
personModle.find({},(err,docs) => {
if(!err){
console.log(docs)
}else{
console.log(err)
}
})
//按照对应信息查找数据
personModle.find({},{name:1,age:1,_id:0},(err,docs) => {
if(!err){
console.log(docs)
}else{
console.log(err)
}
})
//结果则是以{name:'xxx',age:xx}打印出,不会显示_id
//按对应信息查找,并查找指定项 skip:0,从第一个开始查找,limit:7,查找7个数据
personModle.find({},"-_id name age chat",{skip:0,limit:7},(err,docs) => {
if(!err){
console.log(docs)
}else{
console.log(err)
}
})
删改
//通过model的update()实现改数据
//$set为要修改项,multi:true则是全部修改
personModle.update({name:"阿卡丽"},{$set:{age:42}},{multi:true}, (err) => {
if(!err){
console.log('修改成功')
}else{
console.log(err)
}
})
//删除数据
//model.deleteMany();model.deleteOne();model.remove()
personModle.remove({name:'压缩'},(err) => {
if(!err){
console.log('删除成功')
}else{
console.log(err)
}
})
统计文档个数
//统计文档的个数 model.count()
personModle.count({},(err,count) => {
if(!err){
console.log(count)
}else{
console.log(err)
}
})
还有许多使用的函数,去阅读文档吧~~