3.9 Mongoose基于Model的新增和删除操作

文档新增

文档新增有三种方法,一种是使用上面介绍过的文档的save()方法,另一种是使用模型model的create()方法,最后一种是模型model的insertMany()方法

save()

[注意]回调函数可以省略

save([options], [options.safe], [options.validateBeforeSave], [fn])

新建{age:10,name:'save'}文档,并保存

var mongoose = require('mongoose');
mongoose.connect("mongodb://u1:123456@localhost/db1", function(err) {
    if(!err){
        var schema = new mongoose.Schema({ age:Number, name: String});        
        var temp = mongoose.model('temp', schema);
        //使用链式写法    
        new temp({age:10,name:'save'}).save(function(err,doc){
            //[ { _id: 59720bc0d2b1125cbcd60b3f, age: 10, name: 'save', __v: 0 } ]
            console.log(doc);        
        });         
    }           
});

create()

使用save()方法,需要先实例化为文档,再使用save()方法保存文档。而create()方法,则直接在模型Model上操作,并且可以==同时新增多个文档==

新增{name:"xiaowang"},{name:"xiaoli"}这两个文档

insertMany()

新增{name:"a"},{name:"b"}这两个文档

文档删除

有三种方法用于文档删除

remove()

remove有两种形式,一种是文档的remove()方法,一种是Model的remove()方法

下面介绍Model的remove()方法,该方法的第一个参数conditions为查询条件,第二个参数回调函数的形式如下function(err){}

删除数据库中名称包括'30'的数据

[注意]remove()方法中的回调函数不能省略,否则数据不会被删除。当然,可以使用exec()方法来简写代码

下面介绍文档的remove()方法,该方法的参数回调函数的形式如下function(err,doc){}

删除数据库中名称包含'huo'的数据

[注意]文档的remove()方法的回调函数参数可以省略

findOneAndRemove()

model的remove()会删除符合条件的所有数据,如果只删除符合条件的第一条数据,则可以使用model的findOneAndRemove()方法

集合temps现有数据如下

现在删除第一个年龄小于20的数据

与model的remove()方法相同,回调函数不能省略,否则数据不会被删除。当然,可以使用exec()方法来简写代码

findByIdAndRemove()

删除第0个元素

类似的,该方法也不能省略回调函数,否则数据不会被删除。当然,可以使用exec()方法来简写代码

Last updated