What is the difference between findByIdAndUpdate() and findOneAndUpdate(), in mongoose?

Viewed 8362

Can anybody explain the difference between findByIdAndUpdate() and findOneAndUpdate() in mongoose.

And also the difference between findOneAndUpdate(req.params.id) and findOneAndUpdate({_id: req.params.id})?

1 Answers

Check out the documentation for findByIdAndUpdate() and findOneAndUpdate() which clearly states:

findByIdAndUpdate(id, ...) is equivalent to findOneAndUpdate({ _id: id }, ...).

So, really, findByIdAndUpdate() is just a convenient shorthand version for an update scenario that is likely to happen very often ("update by id").

With respect to your second question:

And also the difference between findOneAndUpdate(req.params.id) and findOneAndUpdate({_id: req.params.id})?

The first one will simply crash as the first parameter to findOneAndUpdate() is expected to be a filter document. The second one will work and is equivalent to findByIdAndUpdate(req.params.id) as already noted above.

Related