Jak odstranit dokumenty v mongo s mongoose

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