DEV Community

Cover image for How to delete documents in mongo with mongoose
Adrian Matei for Codever

Posted on • Updated on • Originally published at codever.dev

How to delete documents in mongo with mongoose

To delete one entry you can use findOneAndRemove command - it issues a mongodb findAndModify remove command.
Finds a matching document, removes it, passing the found document (if any) to the callback.

let deleteBookmarkById = async (userId, bookmarkId) => {
  const bookmark = await Bookmark.findOneAndRemove({
    _id: bookmarkId,
    userId: userId
  });

  if ( !bookmark ) {
    throw new NotFoundError('Bookmark NOT_FOUND with id: ' + bookmarkId);
  } else {
    return true;
  }
};
Enter fullscreen mode Exit fullscreen mode

An alternative is to use the deleteOne() method which deletes the first document that matches conditions from the collection. It returns an object with the property deletedCount indicating how many documents were deleted:

let deleteBookmarkById = async (userId, bookmarkId) => {
  const response = await Bookmark.deleteOne({
    _id: bookmarkId,
    userId: userId
  });

  if ( response.deletedCount !== 1 ) {
    throw new NotFoundError('Bookmark NOT_FOUND with id: ' + bookmarkId);
  } else {
    return true;
  }
};
Enter fullscreen mode Exit fullscreen mode

To delete multiple documents use the deleteMany function. This deletes all the documents that match the conditions specified in filter. It returns an object with the property deletedCount containing the number of documents deleted.

/**
 * Delete bookmarks of a user, identified by userId
 */
let deleteBookmarksByUserId = async (userId) => {
  await Bookmark.deleteMany({userId: userId});
  return true;
};
Enter fullscreen mode Exit fullscreen mode


Reference -

https://mongoosejs.com/docs/api/model.html


Shared with โค๏ธ from Codever. Use ๐Ÿ‘‰ copy to mine functionality to add it to your personal snippets collection.

Top comments (0)