猫鼬:计算删除文件

Son*_*123 11 mongoose node.js

如何检查Mongoose模型的remove-method是否真的删除了某些东西?

MyModel.remove({_id: myId}, function(err, entry) {
  if(entry == null) next(new Error("ID was not found."));    // this doesn't work
}
Run Code Online (Sandbox Code Playgroud)

我可以查看删除了多少文件?

Mongo-Documentation kristina1中写下评论:

如果在删除后调用db.runCommand({getLastError:1}),则"n"字段将告诉您删除了多少文档.

但我不知道如何用Mongoose做到这一点.

Joh*_*yHK 31

猫鼬<4,MongoDB <3

remove回调的第二个参数是一个包含已删除文档数的数字.

MyModel.remove({_id: myId}, function(err, numberRemoved) {
  if(numberRemoved === 0) next(new Error("ID was not found."));
}
Run Code Online (Sandbox Code Playgroud)

Mongoose 4.x,MongoDB 3.x

传递给remove回调的第二个参数现在是一个对象,其中的result.n字段指示已删除文档的数量:

MyModel.remove({_id: myId}, function(err, obj) {
  if(obj.result.n === 0) next(new Error("ID was not found."));
}
Run Code Online (Sandbox Code Playgroud)

  • 很奇怪,Mongoose文档没有这个参数.+1 (12认同)
  • @warriorpostman它在3.8.21中仍然有效; 我刚刚尝试过. (2认同)