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

MongoDBで_idを指定してドキュメントを削除する方法【初心者向け解説】

MongoDBにおいて、_id を条件に特定のドキュメントを削除したい場合は、remove() メソッドに ObjectId() を指定して実行します。まずは基本となる構文を見てみましょう。

db.yourCollectionName.remove({"_id":ObjectId("yourId")});

サンプルコレクションの作成

それでは、実際に動作を確認するために、複数のドキュメントを含むコレクションを作成してみましょう。以下のクエリを順番に実行します。

>db.removeDocumentOnBasisOfId.insertOne({"UserName":"Larry","UserAge":23,"UserCountryName":"US"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c986f9f330fd0aa0d2fe4a3")
}
>db.removeDocumentOnBasisOfId.insertOne({"UserName":"Sam","UserAge":21,"UserCountryName":"UK"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c986fb4330fd0aa0d2fe4a4")
}
>db.removeDocumentOnBasisOfId.insertOne({"UserName":"Chris","UserAge":24,"UserCountryName":"US"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c986fc0330fd0aa0d2fe4a5")
}
>db.removeDocumentOnBasisOfId.insertOne({"UserName":"Robert","UserAge":26,"UserCountryName":"UK"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c986fcf330fd0aa0d2fe4a6")
}
>db.removeDocumentOnBasisOfId.insertOne({"UserName":"David","UserAge":28,"UserCountryName":"AUS"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c986fed330fd0aa0d2fe4a7")
}

登録済みドキュメントの確認

find() メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。

> db.removeDocumentOnBasisOfId.find().pretty();

上記のクエリを実行すると、次のような出力が得られます。

{
   "_id" : ObjectId("5c986f9f330fd0aa0d2fe4a3"),
   "UserName" : "Larry",
   "UserAge" : 23,
   "UserCountryName" : "US"
}
{
   "_id" : ObjectId("5c986fb4330fd0aa0d2fe4a4"),
   "UserName" : "Sam",
   "UserAge" : 21,
   "UserCountryName" : "UK"
}
{
   "_id" : ObjectId("5c986fc0330fd0aa0d2fe4a5"),
   "UserName" : "Chris",
   "UserAge" : 24,
   "UserCountryName" : "US"
}
{
   "_id" : ObjectId("5c986fcf330fd0aa0d2fe4a6"),
   "UserName" : "Robert",
   "UserAge" : 26,
   "UserCountryName" : "UK"
}
{
   "_id" : ObjectId("5c986fed330fd0aa0d2fe4a7"),
   "UserName" : "David",
   "UserAge" : 28,
   "UserCountryName" : "AUS"
}

_idを指定してドキュメントを削除する

ここでは、Chris のドキュメント(_id: 5c986fc0330fd0aa0d2fe4a5)を削除してみます。以下のように _id を条件として remove() を実行します。

> db.removeDocumentOnBasisOfId.remove({"_id":ObjectId("5c986fc0330fd0aa0d2fe4a5")});
WriteResult({ "nRemoved" : 1 })

出力结果の nRemoved : 1 は、1件のドキュメントが正常に削除されたことを示しています。

削除後のコレクションを確認

ドキュメントが正しく削除されたかどうか、もう一度すべてのドキュメントを表示して確認しましょう。

> db.removeDocumentOnBasisOfId.find().pretty();

実行結果は以下のとおりです。Chris のドキュメントだけが削除され、残り4件が表示されていることがわかります。

{
   "_id" : ObjectId("5c986f9f330fd0aa0d2fe4a3"),
   "UserName" : "Larry",
   "UserAge" : 23,
   "UserCountryName" : "US"
}
{
   "_id" : ObjectId("5c986fb4330fd0aa0d2fe4a4"),
   "UserName" : "Sam",
   "UserAge" : 21,
   "UserCountryName" : "UK"
}
{
   "_id" : ObjectId("5c986fcf330fd0aa0d2fe4a6"),
   "UserName" : "Robert",
   "UserAge" : 26,
   "UserCountryName" : "UK"
}
{
   "_id" : ObjectId("5c986fed330fd0aa0d2fe4a7"),
   "UserName" : "David",
   "UserAge" : 28,
   "UserCountryName" : "AUS"
}

補足:新しいバージョンでの推奨メソッド

MongoDB 5.0 以降では、remove() メソッドは非推奨(deprecated)となっており、代わりに以下のメソッドの使用が推奨されています。

  • deleteOne():条件に一致するドキュメントを1件だけ削除する
  • deleteMany():条件に一致するすべてのドキュメントを削除する

例えば、上記と同じ操作は次のように書き換えられます。

> db.removeDocumentOnBasisOfId.deleteOne({"_id":ObjectId("5c986fc0330fd0aa0d2fe4a5")});

このように、_id は各ドキュメントを一意に識別できるため、意図しないドキュメントを誤って削除するリスクが少なく、安全な削除処理に適しています。

  1. MongoDBで_idを指定してドキュメントを削除する方法を徹底解説

    MongoDBで_idを指定してドキュメントを削除する方法 MongoDBでは、remove()メソッドを使用することで、_idを指定して特定のドキュメントを削除できます。本記事では、実際のコード例を交えながら、削除の手順をわかりやすく解説します。 基本構文 _idでドキュメントを削除する際の基本的な構文は以下のとおりです。 db.yourCollectionName.remove({_id: yourObjectId}); サンプルコレクションの作成 まず、動作を確認するために、ドキュメントを含むコレクションを作成します。 > db.demo518.insertOne({ClientN

  2. MongoDBの埋め込みドキュメントから特定の要素を抽出する方法($unwind・$match・$projectの活用)

    MongoDBでは、配列形式の埋め込みドキュメントから特定の条件に合う要素だけを取り出したい場面がよくあります。そのような場合は、集計(Aggregation)パイプラインで $unwind、$match、$project を組み合わせることで、目的のデータを効率的に抽出できます。コレクションの作成とドキュメントの挿入まず、insertOne() メソッドを使って、学生情報を配列として持つコレクションを作成します。> db.demo744.insertOne( ... { ... studentInformation: ... [ ...