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;
}
};
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;
}
};
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;
};
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)