Mongoose Model.remove(callback)不会从我的collections中删除任何东西

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

我努力了

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

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

即使删除.find()步骤或添加.exec()我的callback从不显示和我的数据仍然在这里。

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

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

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

编辑

我的问题是由于没有显示的语法错误造成的。 选定的答案确实有效,上面的代码也是如此。 欢迎主持人删除我的问题,如果有必要的话。

这不是由Mongoose返回的“查询”对象,这里唯一有效的方法是.remove()

 MyModel.remove(function(err,removed) { // where removed is the count of removed documents }); 

这是一样的:

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

另外,你如何确定没有文件被删除? 可能看错了collections。 除非明确指定集合名称,否则Mongoose会默认复制集合名称,如下所示:

 mongoose.Model( "MyModel", myModelSchema, "mymodel" ) 

如果没有第三个参数或者在模式上指定集合名称暗示为“mymodels”。 因此,请检查您是否拥有正确的集合以及您希望删除文档的正确数据库连接。

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

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

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

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