MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBのdeleteOne()関数の使い方を徹底解説!ドキュメントを1件だけ削除する方法

MongoDBのdeleteOne()関数とは

MongoDBのdeleteOne()関数は、コレクションから検索条件に一致するドキュメントを最大1件だけ削除するためのメソッドです。条件に一致するドキュメントが複数存在する場合でも、削除されるのは最初に見つかった1件のみという点が特徴です。

本記事では、実際にサンプルコレクションを作成しながら、deleteOne()の基本的な使い方と動作を順を追って確認していきます。

ステップ1:サンプルコレクションの作成

まず、insertOne()メソッドを使ってドキュメントを挿入し、テスト用のコレクション「demo363」を作成します。

> db.demo363.insertOne({"Name":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e57d2c3d0ada61456dc9369")
}
> db.demo363.insertOne({"Name":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e57d2c7d0ada61456dc936a")
}
> db.demo363.insertOne({"Name":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e57d2cad0ada61456dc936b")
}
> db.demo363.insertOne({"Name":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e57d2d1d0ada61456dc936c")
}

ここで、「Chris」という名前のドキュメントを意図的に2件登録している点に注目してください。後ほど、deleteOne()がどちらのドキュメントを削除するのかを確認できます。

ステップ2:登録済みドキュメントの確認

find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみましょう。

> db.demo363.find();

実行すると、以下のような出力が得られます。

{ "_id" : ObjectId("5e57d2c3d0ada61456dc9369"), "Name" : "Chris" }
{ "_id" : ObjectId("5e57d2c7d0ada61456dc936a"), "Name" : "David" }
{ "_id" : ObjectId("5e57d2cad0ada61456dc936b"), "Name" : "Bob" }
{ "_id" : ObjectId("5e57d2d1d0ada61456dc936c"), "Name" : "Chris" }

合計4件のドキュメントが登録されており、そのうち2件が「Chris」であることがわかります。

ステップ3:deleteOne()でドキュメントを削除する

それでは、MongoDBでdeleteOne()を使用するクエリを実行します。ここでは、Nameフィールドが「Chris」であるドキュメントを削除対象として指定します。

> db.demo363.deleteOne({Name:"Chris"});
{ "acknowledged" : true, "deletedCount" : 1 }

実行結果のdeletedCountが「1」になっていることに注目してください。これは、条件に一致した2件のうち、最初の1件だけが削除されたことを意味します。

ステップ4:削除後のコレクションの状態を確認

再びfind()メソッドでコレクション内の全ドキュメントを表示します。

> db.demo363.find();

実行結果は以下の通りです。

{ "_id" : ObjectId("5e57d2c7d0ada61456dc936a"), "Name" : "David" }
{ "_id" : ObjectId("5e57d2cad0ada61456dc936b"), "Name" : "Bob" }
{ "_id" : ObjectId("5e57d2d1d0ada61456dc936c"), "Name" : "Chris" }

先頭にあったObjectId「5e57d2c3d0ada61456dc9369」の「Chris」ドキュメントが削除され、もう一方の「Chris」ドキュメントは残っていることが確認できました。

まとめ:deleteOne()のポイント

このように、deleteOne()は条件に一致するドキュメントが複数あっても、そのうち1件(自然順で最初のもの)だけを削除します。主なポイントは以下の通りです。

・戻り値のdeletedCountで実際に削除された件数を確認できる
・条件に一致するドキュメントが存在しない場合はdeletedCount : 0が返る
・一致するすべてのドキュメントを削除したい場合は、代わりにdeleteMany()を使用する

用途に応じてdeleteOne()とdeleteMany()を使い分けることで、安全かつ効率的にドキュメントを管理できるようになります。

  1. ExcelのPI関数の使い方!円周率を使った計算方法を徹底解説

    Microsoft ExcelのPI関数は、数学/三角関数に分類される関数の一つで、円周率(π)の値を返します。書式は =PI() と非常にシンプルで、引数は一切必要ありません。 ExcelでPI関数を使う手順 以下の手順に従って、Microsoft ExcelでPI関数を使用してみましょう。 Microsoft Excelを起動する 新しい表を作成するか、既存のファイルから表を開く 結果を表示したいセルに関数(数式)を入力する Enterキーを押して結果を確認する まず、Microsoft Excelを起動します。 続いて、新しい表を作成するか、保存済みのファイルから既存の表を開きましょ

  2. ExcelのVLOOKUP関数の使い方を徹底解説!基本から応用まで

    大量のデータが入ったExcelスプレッドシートから、特定の情報だけを簡単に抽出したいと思ったことはありませんか?ExcelでVLOOKUPを使いこなせるようになれば、たった一つの強力な関数だけで、こうした検索・抽出作業を実現できます。 VLOOKUP関数は、引数が多く、使い方も複数あるため、多くの人にとってとっつきにくい存在です。この記事では、ExcelにおけるVLOOKUPのあらゆる使い方と、この関数がなぜそれほど強力なのかを、具体例を交えながら詳しく解説します。 ExcelのVLOOKUP関数の引数 Excelの任意のセルに=VLOOKUP(と入力すると、利用可能な引数の一覧がポップ