Chcete-li odstranit jeden záznam, můžete použít findOneAndRemove
příkaz - vydá mongodb findAndModify
odebrat příkaz.
Najde odpovídající dokument, odstraní jej a předá nalezený dokument (pokud existuje) zpětnému volání.
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;
}
};
Alternativou je použití deleteOne()
metoda, která odstraní první dokument odpovídající conditions
ze sbírky. Vrací objekt s vlastností deletedCount
udávající, kolik dokumentů bylo odstraněno:
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;
}
};
Chcete-li odstranit více dokumentů, použijte deleteMany
funkce. Tím se vymažou všechny dokumenty, které splňují podmínky zadané ve filtru. Vrací objekt s vlastností deletedCount
obsahující počet smazaných dokumentů.
/**
* 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