如您所知,在 mongoose 中,我们可以像这样删除所有 30 岁的用户:

User.find({age: 30}).remove(callback);

现在,用 find() 替换 findOne() ,我认为它应该只删除 1 个用户:
User.findOne({age: 30}).remove(callback);

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

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

提前致谢!

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

最佳答案

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

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

这是来自aheckmann的消息

“这是一个很好的捕获。findOne 只是将命令名称设置为运行,remove() 将其更改回一个 Rice 命令,但没有设置任何限制。我们可能应该在 3.9 中更改它,以便 findOne 设置
极限也一样。”

关于node.js - 了解 Mongoose findOne().remove(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20823150/

10-17 00:07