Mongoose Model.remove(回调)不会从我的集合中删除任何内容

AsT*_*TeR 8 javascript mongoose mongodb node.js

我正在尝试从我的Mongoose数据库中删除所有内容,但似乎没有任何工作.

我试过了

# CoffeeScript
MyModel.find().remove((err) -> console.log('purge callback'))

# JavaScript
MyModel.find().remove(function() { console.log('purge callback') })
Run Code Online (Sandbox Code Playgroud)

# CoffeeScript
MyModel.find().remove({}, (err) -> console.log('purge callback'))

# JavaScript
MyModel.find().remove({}, function() { console.log('purge callback') })
Run Code Online (Sandbox Code Playgroud)

即使删除.find()步骤或添加.exec()我的回调也从未显示,我的数据仍在此处.

我很确定我的模型和连接都可以:

  • 我可以在Mongo的日志中看到连接
  • 我可以通过在其他地方操纵相同的模型来添加文档

相关:如何使用Node.js Mongoose删除文档?

编辑

我的问题是由未显示的语法错误引起的.所选答案确实有效,上述代码也是如此.如果有必要,欢迎主持人删除我的问题.

Nei*_*unn 21

它不是Mongoose返回的"查询"对象,这里唯一有效的方法是.remove():

MyModel.remove(function(err,removed) {

   // where removed is the count of removed documents
});
Run Code Online (Sandbox Code Playgroud)

这与以下相同:

MyModel.remove({}, function(err,removed) {

});
Run Code Online (Sandbox Code Playgroud)

另外,您如何确定没有删除任何文件?可能正在寻找错误的收藏品.除非您明确指定集合名称,否则Mongoose会默认复制集合名称,如下所示:

mongoose.Model( "MyModel", myModelSchema, "mymodel" )
Run Code Online (Sandbox Code Playgroud)

如果没有第三个参数或以其他方式指定模式,则集合名称隐含为"mymodels".因此,请检查您是否具有正确的集合以及您希望删除文档的正确数据库连接.


thr*_*n19 13

函数.remove仅适用于Mongoose文档模型实例.这是删除一个模型的示例:

Model.findOne({ field : 'toto'}, function (err, model) {
    if (err) {
        return;
    }
    model.remove(function (err) {
        // if no error, your model is removed
    });
});
Run Code Online (Sandbox Code Playgroud)

但是,如果要删除具有特定查询的元素,则应使用函数之remove类的find函数:

Model.remove({ title : 'toto' }, function (err) {
    // if no error, your models are removed
});
Run Code Online (Sandbox Code Playgroud)