了解mongoose findOne().remove()

dam*_*hat 11 mongoose mongodb node.js

如您所知,mongoose我们可以删除30岁以下的所有用户:

User.find({age: 30}).remove(callback);
Run Code Online (Sandbox Code Playgroud)

现在,替换find()findOne(),我认为它应该只删除1个用户:

User.findOne({age: 30}).remove(callback);
Run Code Online (Sandbox Code Playgroud)

哦,不像我预期的那样,上面的代码也删除了ALL而不是ONE

那么,为什么要findOne().remove()删除ALL而不是ONE?这是一个错误或功能,为什么?

提前致谢!

P/S:我知道findOneAndRemove()会为我删除一个用户,但在这个问题中我想了解findOne().remove()

dam*_*hat 10

我已经向mongoose团队报告了这个问题,并得到了答复:

https://github.com/LearnBoost/mongoose/issues/1851#issuecomment-31355346

这是来自aheckmann的信息

"这是一个很好的捕获.getOne只是将命令名称设置为run,remove()将其更改为rice命令,但没有设置限制.我们应该在3.9中更改它,以便findOne也设置限制."