findOneAndDelete() (削除してドキュメントを返す)

最終更新:2026-10-09

findOneAndDelete() (削除してドキュメントを返す)

findOneAndDelete() はフィルタに一致する最初のドキュメントを削除し、削除されたドキュメント自体を返します。例: `db.users.findOneAndDelete({ name: 'Cara' })`。カウンタのみを返す deleteOne() と異なり、完全なドキュメントを返すため、アーカイブや監査ログの削除に便利です。一致するものが無い場合は null を返します。

カテゴリ書き込み
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

db.<collection>.findOneAndDelete(<filter>, { projection: <fields> })

⚙️ パラメータ

フィルター条件削除するドキュメントにマッチする述語。
projection任意。削除されたドキュメントのどのフィールドを返すかを制御します。

戻り値:削除されたドキュメント。何もマッチしない場合は null。

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// findOneAndDelete: Cara を削除し、そのレコードを表示する
const removed = db.users.findOneAndDelete({ name: 'Cara' })
removed

出力:

{
  _id: ObjectId('64c8a1b20000000000000003'),
  name: 'Cara',
  age: 30
}

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

QfindOneAndDelete と deleteOne の違いは何ですか?
AdeleteOne() は deletedCount のみを返します。findOneAndDelete() はアーカイブや監査のための完全な削除ドキュメントを返します。
Q一致するものが無い場合、findOneAndDelete は何を返しますか?
Aエラーを投げず null を返すため、フィルタが一致したかどうかを判断できます。
QfindOneAndDelete で返されるフィールドを制限できますか?
Aできます。projection オプションで制限します。例: {projection: {name: 1}} は name のみを返します。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%