mongoose的安装及使用

本文详细介绍如何使用Mongoose操作MongoDB数据库,包括安装配置、连接数据库、数据增删改查等核心操作,以及一些高级用法如数据查询和更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、下载mongoose

 cnpm i mongoose --save

2、引入mongoose并连接数据库

const mongoose = require('mongoose')//引入

//连接 默认端口号 27017 可不写
mongoose.connect('mongodb://localhost/test',{useNewUrlParser:true})

//监听连接成功
mongoose.connection.once('open',()=>{
    console.log('连接成功');
})

//监听断开连接
// mongoose.connection.once('close',()=>{
//     console.log('数据库连接已断开');
// })

// //断开连接
// mongoose.disconnect()

2.1 插入数据

const { Schema } =  mongoose;

var stuSchema = new Schema({
    name:String,
    age:Number,
    gender:{
        type:String,
        default:'female'
    },
    address:String
})

//通过Schema 创建 model

var StuModel =  mongoose.model('student',stuSchema);

//向数据库中插入一个文档

StuModel.create({
    name:"张三丰",
    age:20,
    gender:'man',
    address:"武当山"
},(err)=>{
    if(!err){
        console.log('插入成功');
    }
})

StuModel.create([{
    name:"郭襄",
    age:18,
    address:"峨眉山"
},
{
    name:"张无忌",
    age:6,
    gender:'man',
    address:"光明顶" 
}
],(err)=>{
    if(!err){
        console.log('插入成功');
    }
})

2.2 查// StuModel.find(conditions,[projection],[options],cb)

// StuModel.find(conditions,[projection],[options],cb)
// conditions 查询条件  projection 投影(显示的字段) options 查询选项  cb 回调
//StuModel.findOne()
//StuModel.findById()

// StuModel.find({name:"张无忌"},(err,docs)=>{
//     console.log(docs)
// })

//显示name 不显示_id
// StuModel.find({name:"张无忌"},{name:1,_id:0},(err,docs)=>{
//     console.log(docs)
// })
//显示 name age  不显示_id
StuModel.find({name:"张无忌"},"name age -_id",(err,docs)=>{
    console.log(docs)
})

StuModel.find({name:"张无忌"},"name age -_id",{skip:3,limit:1},(err,docs)=>{
    console.log(docs)
})
//查找符合条件的一个
StuModel.findOne({name:"张无忌"},(err,doc)=>{})

2.3 修改数据


// StuModel.update(conditions,doc,[options],[cb]) 
//conditions 查询条件  doc  修改后的文档  options 查询选项   cb 回调
// StuModel.updateOne()
// StuModel.updateMany()
// StuModel.replaceOne()

StuModel.updateOne({name:"张三丰"},{$set:{age:20}},(err)=>{
    if(!err){
        console.log('更新成功');
    }
})

2.4 删除数据

// StuModel.remove(conditions,[cb])
// StuModel.deleteOne()
// StuModel.deleteMany()

StuModel.remove({name:"郭襄"},(err)=>{
    if(!err){
        console.log('删除成功')
    }
})


2.5 其他方法

//查询数据条数
 StuModel.count({},(err,num)=>{
     console.log(num);
 })

2.6 doc的方法

StuModel.findOne({},(err,doc)=>{
    //更新
    doc.update({$set:{age:28}},err=>{

    })
    //另一种 方式
    // doc.age = 100;
    // doc.save();
    doc.get('name')
    console.log(   doc.get('name'));
    
    doc.set('name','张三丰先生')
    doc.save()

})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值