15.Model的方法

Model的方法

这里,我们再在01.mongoose下新建一个js文件,命名为model。
先输入上个博客的部分代码:

const mongoose = require("mongoose");
mongoose.connect('mongodb://127.0.0.1/mongoose_test', {useNewUrlParser: true, useUnifiedTopology: true});
mongoose.connection.once("open", function () {
    console.log("连接成功");
});

const {Schema} = mongoose;
const stuSchema = new Schema({
    name: String,
    age: Number,
    //配置复杂内容,传对象
    sex:{
        type:String,
        default:"female"
    },
    address: String
});

const StuModel = mongoose.model("student", stuSchema);

想直到Model的方法有哪些,可以点击这里
进入后,左下角有个API,点击Model
在这里插入图片描述
然后可以看到右边显示如下:
这些就是Model的方法。
在这里插入图片描述

create

这里,显示的是需要的参数,有[ ]的是可写可不写的,而没加[ ]的是必须要有的。
在这里插入图片描述
该方法用来创建文档并添加到数据库中。
参数:
docs可以是一个文档对象(Object),也可以是一个文档对象的数组(Array)
options传入的是一个对象,要制定options,docs必须是一个数组,不能是一个文档对象
callback传入的是要给方法,操作成功调用该回调函数
然后我们再看看他的Example。
在这里插入图片描述
这里比起17年少了一个方法哈,我自己补充一下(上面其实也有用到,直接贴代码吧,就是一个运行成功调用的函数,传入的参数是err)。
在前面的代码的最后面加上以下代码:

StuModel.create([
    {
        name:"猪八戒",
        age:28,
        sex:"male",
        address:"高老庄"
    },
    {
        name:"唐僧",
        age:16,
        sex:"male",
        address:"女儿国"
    }
],function (err) {
    if(!err){
        console.log("插入成功");
    }
});

执行后,可以看到,数据库中多了两行。这里就不贴图了。
这里说一下,如果你想在插入成功后查看插入的数据的话,可以将上面的代码这么用:

StuModel.create([
    {
        name:"猪八戒",
        age:28,
        sex:"male",
        address:"高老庄"
    },
    {
        name:"唐僧",
        age:16,
        sex:"male",
        address:"女儿国"
    }
],function (err) {
    if(!err){
        console.log(arguments);
    }
});

find

在这里插入图片描述
这里的find其实跟mongoDB下的find差不多。
作用:用于查询所有符合条件的文档
参数:
filter 是一个文档对象或者文档对象的id,查询条件
[projection] 是一个文档对象或字符串或字符串数组 ,作用是投影
[options] 是一个文档对象,查询选项(skip, limit)
[callback] 是执行成功的回调方法,查询结果会通过函数返回,回调函数必传,如果不传,那么查询将白查
这里我们先注释掉以下代码:

// StuModel.create([
//     {
//         name:"猪八戒",
//         age:28,
//         sex:"male",
//         address:"高老庄"
//     },
//     {
//         name:"唐僧",
//         age:16,
//         sex:"male",
//         address:"女儿国"
//     }
// ],function (err) {
//     if(!err){
//         console.log("插入成功");
//     }
// });

然后输入代码:

StuModel.find({name:"唐僧"},function (err, docs) {
    if(!err){
        console.log(docs);
    }
});

返回数据如下:
在这里插入图片描述
这里我们可以看到,返回的是一个数组,因此,如果我们要想知道他的姓名的话,跟MongoDB中的用法一样,得使用索引,将刚才的代码改为:

StuModel.find({name:"唐僧"},function (err, docs) {
    if(!err){
        console.log(docs[0].name);
    }
});

如果我们想要所有的name,不要_id的话,那么代码如下:

StuModel.find({},{name:1, _id:0},function (err, docs) {
    if(!err){
        console.log(docs);
    }
});

可以看到,这个跟我们在MongoDB中的命令其实很像。
在这里插入图片描述
或者我们也可以这么用:

StuModel.find({},"name age",function (err, docs) {
    if(!err){
        console.log(docs);
    }
});

运行结果如下:
在这里插入图片描述
如果我们不想要这个_id呢,我们就这样:

StuModel.find({},"name age -_id",function (err, docs) {
    if(!err){
        console.log(docs);
    }
});

结果如下:
在这里插入图片描述
然后我们再试试option这个参数:

StuModel.find({},"name age -_id",{skip:3}, function (err, docs) {
    if(!err){
        console.log(docs);
    }
});

运行结果如下:
在这里插入图片描述
可以看到,现在就只显示一个了。
然后我们再试试limit,代码如下:

StuModel.find({},"name age -_id",{limit:2}, function (err, docs) {
    if(!err){
        console.log(docs);
    }
});

显示如下:
在这里插入图片描述
可以看到,跟我们在MongoDB下其实基本上都是一样的。
如果两个都要,用法如下:

StuModel.find({},"name age -_id",{limit:2, skip:1}, function (err, docs) {
    if(!err){
        console.log(docs);
    }
});

update

在这里插入图片描述
在这里插入图片描述
这个有点多我就不解释了,基本上应该能看吧。
简单说就是:
filter 查询条件
doc 修改后的对象
options 配置参数
callback 回调函数

这里直接贴代码:
为了排除干扰,我们还得先把之前查询的代码给注释掉哈。

// StuModel.find({},"name age -_id",{limit:2}, function (err, docs) {
//     if(!err){
//         console.log(docs);
//     }
// });

//修改
StuModel.update({name:"唐僧"}, {$set:{age:20}}, function (err) {
    if(!err){
        console.log("修改成功");
    }
});

remove

在这里插入图片描述
这里直接贴代码吧,毕竟其实跟MongoDB的用法超级像的,这样还是得自己学会去看官网的东西。

//修改
// StuModel.update({name:"唐僧"}, {$set:{age:20}}, function (err) {
//     if(!err){
//         console.log("修改成功");
//     }
// });

//删除
StuModel.remove({name:"白骨精"}, function (err) {
    if (!err){
        console.log("删除成功");
    }
});

count

在这里插入图片描述
博主人狠话不多,直接贴代码:

//删除
// StuModel.remove({name:"白骨精"}, function (err) {
//     if (!err){
//         console.log("删除成功");
//     }
// });

//count
StuModel.count({}, function (err, count) {
    if (!err){
        console.log(count);
    }
});

输出结果为:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值