我正在开发一个REST API的后端,它使用MongoDB作为数据库。我正在使用MongoDB 5.3.3版本。
在API请求时,我想删除一个项目集合,但是收到了如上所示的错误信息:
DeprecationWarning: collection.remove已被弃用,请使用deleteOne、deleteMany或bulkWrite
如何完全删除这个集合?
我正在开发一个REST API的后端,它使用MongoDB作为数据库。我正在使用MongoDB 5.3.3版本。
在API请求时,我想删除一个项目集合,但是收到了如上所示的错误信息:
DeprecationWarning: collection.remove已被弃用,请使用deleteOne、deleteMany或bulkWrite
如何完全删除这个集合?
不要使用:Model.remove({});,而应该使用: Model.deleteMany({});
mongoose.connection.dropCollection(specificCollection.name)
// or you could use the collection's name exactly such as 'user'
mongoose.connection.dropCollection()
方法需要一个集合的确切名称,这个名称可能在你定义模式时已经定义好了。
很可能,在你的代码中某个地方定义了具体的模型,例如:
mongoose.model('User', UserSchema)
'User'
和 'user'
是一样的。这个问题出现在新版本的Mongoose中。如果你想使用Model.remove()方法,你应该将当前的Mongoose版本更改为"mongoose": "^5.10.14"或更低版本。在Deprecation Warnings中阅读更多信息。
app.delete('/todo/:item', function(req, res){
Todo.find({item: req.params.item.replace(/\-/g, " ")}).deleteOne(function(err, data){
if(err) throw err;
res.json(data);
});
});