mongoose基础增删改查

基础config.js配置

//1.导入安装包
const mongoose = require('mongoose')
//2.链接数据库-库名------------默认返回promise
mongoose.connect('mongodb://localhost/abcd').then(() => {
    console.log('数据库连接成功');
}).catch(err => {
    console.log('数据库连接成功'+err);
})
/*
*格式规范
*/
//1.数据模式,规范————————Schema
var kittySchema =  mongoose.Schema({
    name:String
})


//2.根据模式创建一个模板-----实例化一个对象
let maomi = mongoose.model('xiaomiaomiao',kittySchema)

//3.根据模板创建实物
let huimao = new maomi({
    name:"xiaohuihui"
})
console.log(huimao);
//4.保存到数据库
huimao.save()

1.向数据库增加数据

代码如下(示例):

//1.导入安装包
const mongoose = require('mongoose')
//2.链接数据库-库名------------默认返回promise
mongoose.connect('mongodb://localhost/abcd').then(() => {
    console.log('数据库连接成功');
}).catch(err => {
    console.log('数据库连接成功'+err);
})

// 1.用户信息的Schema-----------一个js文件
let userSchema = mongoose.Schema({
    userName:String,
    nickName:String,
    gender:Number,
    birthDay:Date,
    hobby:Array,
})
// 2.符合Schema的model------一个js文件----(表名)集合名称,是复数模式
let useModel = mongoose.model('users',userSchema)
// 3.符合model的一条用户数据------在一起
let luFei = new useModel({
    userName:'布鲁克',
    nickName:'灵魂之王',
    gender:1,
    birthDay:'1999-12-26',
    hobby:['音乐','美酒','内裤','牛奶','伙伴'],
})
// 4.插入数据库-------在一起
luFei.save((err,result) => {
    if (err) {
        console.log(err);
    } else {
        console.log('数据插入成功'+result);
    }
})

2.从数据库查询数据

代码如下(示例):

//1.导入安装包
const mongoose = require('mongoose')
//2.链接数据库-库名------------默认返回promise
mongoose.connect('mongodb://localhost/abcd').then(() => {
    console.log('数据库连接成功');
}).catch(err => {
    console.log('数据库连接成功'+err);
})

// 1.用户信息的Schema-----------一个js文件
let userSchema = mongoose.Schema({
    userName:String,
    nickName:String,
    gender:Number,
    birthDay:Date,
    hobby:Array,
})
// 2.符合Schema的model------一个js文件----(表名)集合名称,是复数模式
let useModel = mongoose.model('users',userSchema)

// 3.查询数据库
// useModel.find({userName:'路飞'},function(err,result){
//     err?console.log('没有数据'+err):console.log(result)
// })

async function getData(){
    let rs = await useModel
        .find()//查找数据
        .or([{gender:1}])//匹配符合选择  性比为1的数据
        .sort({_id:'desc'})//依据id降序排列
        .limit(2)//一次搜索前两条
        .skip(4)//跳过四条数据

        console.log(rs);
}
getData()

3.修改数据

代码如下(示例):

//1.导入安装包
const mongoose = require('mongoose')
//2.链接数据库-库名------------默认返回promise
mongoose.connect('mongodb://localhost/abcd').then(() => {
    console.log('数据库连接成功');
}).catch(err => {
    console.log('数据库连接成功'+err);
})

// 1.用户信息的Schema-----------一个js文件
let userSchema = mongoose.Schema({
    userName:String,
    nickName:String,
    gender:Number,
    birthDay:Date,
    hobby:Array,
})
// 2.符合Schema的model------一个js文件----(表名)集合名称,是复数模式
let useModel = mongoose.model('users',userSchema)


// async function setData(){
//     //查询数据
//     let qb = await useModel.findOne({userName:'乔巴'})
//     //修改数据
//     qb.set({
//         gender:3
//     })
//     //重新插入数据库
//     qb.save()
//     console.log(qb);
// }
// setData()

useModel.findOneAndUpdate({userName:'索隆'},{gender:'3'},{new:true},(err,rs) => console.log(rs))

属性new为true时显示更新过后的数据,为false则显示未更新的数据,但数据库已经更新完成。

4.删除数据

代码如下(示例):

const mongoose = require('mongoose')
//2.链接数据库-库名------------默认返回promise
mongoose.connect('mongodb://localhost/abcd').then(() => {
    console.log('数据库连接成功');
}).catch(err => {
    console.log('数据库连接成功'+err);
})

// 1.用户信息的Schema-----------一个js文件
let userSchema = mongoose.Schema({
    userName:String,
    nickName:String,
    gender:Number,
    birthDay:Date,
    hobby:Array,
})
// 2.符合Schema的model------一个js文件----(表名)集合名称,是复数模式
let useModel = mongoose.model('users',userSchema)


// useModel.deleteOne({userName:'乔巴'},(err,rs) => console.log(rs))

useModel.deleteMany({gender:'1'},(err,rs) => console.log(rs))

// useModel.remove({userName:'弗兰奇'},{single:true},(err,rs) => console.log(rs))

deleteOne是删除指定的某一条符合匹配要求的数据,deleteMany是删除多条符合的匹配要求的数据。
remove可以根据single的布尔值true/false来确定删除一条或多条数据
true删除第一条符合要求的数据
false删除所有符合要求的数据


总结

增删改查四个代码页重复部分

const mongoose = require('mongoose')
//2.链接数据库-库名------------默认返回promise
mongoose.connect('mongodb://localhost/abcd').then(() => {
    console.log('数据库连接成功');
}).catch(err => {
    console.log('数据库连接成功'+err);
})

// 1.用户信息的Schema-----------一个js文件
let userSchema = mongoose.Schema({
    userName:String,
    nickName:String,
    gender:Number,
    birthDay:Date,
    hobby:Array,
})
// 2.符合Schema的model------一个js文件----(表名)集合名称,是复数模式
let useModel = mongoose.model('users',userSchema)

后期项目中模块化之后这三个部分都单独的模块,便于代码的维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于基本的增删操作,使用mongoose可以按照以下步骤进行: 1. 定义数据模式Schema:在定义数据模式时使用mongoose.Schema来创建一个新的模式对象。可以通过指定字段名称和类型来定义模式的属性,例如: ```javascript const mongoose = require("mongoose"); const Schema = mongoose.Schema; const NewsSchema = new Schema({ name: {type: String}, age: {type: Number}, sex: {type: String, required: [true, '请选择性别']} }); ``` 2. 定义数据模型Model:通过mongoose.model来创建一个新的模型对象,参数1为模型的名称,参数2为使用的模式对象,参数3为集合名称。例如: ```javascript const UserModel = mongoose.model('User', NewsSchema, 'user'); ``` 3. 增加数据:使用模型对象的create方法来创建一个新的文档,并将其保存到数据库中。例如: ```javascript UserModel.create({name: 'John', age: 25, sex: 'Male'}, (err, doc) => { if(err) { console.log(err); } else { console.log(doc); } }); ``` 4. 询数据:使用模型对象的find方法来询符合条件的文档。例如: ```javascript UserModel.find({name: 'John'}, (err, docs) => { if(err) { console.log(err); } else { console.log(docs); } }); ``` 5. 更新数据:使用模型对象的updateOne或updateMany方法来更新符合条件的文档。例如: ```javascript UserModel.updateOne({name: 'John'}, {age: 30}, (err, result) => { if (err) { console.log(err); } else { console.log(result); } }); ``` 6. 删除数据:使用模型对象的deleteOne或deleteMany方法来删除符合条件的文档。例如: ```javascript UserModel.deleteOne({name: 'John'}, (err) => { if (err) { console.log(err); } else { console.log('删除成功'); } }); ``` 以上是使用mongoose进行基本增删的步骤。可以根据具体的需求和条件进行相应的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [mongoose实现增删](https://blog.csdn.net/qq_44747461/article/details/121178662)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [eggjs实战(5)——eggjs+mongoose(egg-mongoose)增删技巧](https://blog.csdn.net/zjsj_lize/article/details/120938407)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值