Delete Documents
Overview
このセクションでは、書込み操作を呼び出して MongoDB database 内のコレクションからドキュメントを削除する方法を示します。
削除
コレクションから既存のドキュメントを削除する場合は、 deleteOne()
を使用して 1 つのドキュメントを削除し、 deleteMany()
を使用して 1 つ以上のドキュメントを削除できます。 これらのメソッドは、削除するドキュメントに一致するクエリ ドキュメントを受け入れます。
注意
アプリケーションが削除後に削除されたドキュメントに関する情報を使用する場合は、コレクション.findOneAndDelete() メソッドを使用できます。このメソッドは deleteOne()
と同様のインターフェースを持ちますが、削除されたドキュメントも返します。
次のように、JSON オブジェクトでdeleteOne()
またはdeleteMany()
の書込み (write) 操作によって削除するドキュメントを指定できます。
const doc = { pageViews: { $gt: 10, $lt: 32768 } };
deleteOne()
メソッドを使用して最初に一致するドキュメントを削除するか、 deleteMany()
メソッドを使用して一致するすべてのドキュメントを削除するには、ドキュメントをメソッド パラメータとして渡します。
const deleteResult = await myColl.deleteOne(doc); const deleteManyResult = await myColl.deleteMany(doc);
次のように、上記の各メソッド呼び出しの結果のdeletedCount
フィールドにアクセスすることで、操作によって削除されたドキュメントの数を出力できます。
console.dir(deleteResult.deletedCount); console.dir(deleteManyResult.deletedCount);
削除操作が成功した場合、これらのステートメントは関連する操作によって削除されたドキュメントの数を出力します。
deleteOne() の例: 完全なファイル
注意
セットアップ例
この例では、接続 URI を使用してMongoDBのインスタンスに接続します。 MongoDBインスタンスへの接続の詳細については、「 MongoDBへの接続ガイド 」を参照してください。この例では、 Atlasサンプルデータセット に含まれる sample_mflix
データベースの movies
コレクションも使用します。 「 Atlas を使い始める 」ガイドに従って、 MongoDB Atlasの無料階層のデータベースにロードできます。
注意
TypeScript 固有の機能なし
次のコード例ではJavaScriptを使用します。このユースケースに関連するドライバーの TypeScript 固有の機能はありません。
次のコードは、1 つの削除操作を実行する完全なスタンドアロンファイルです。
1 // Delete a document 2 3 import { MongoClient } from "mongodb"; 4 5 // Replace the uri string with your MongoDB deployment's connection string 6 const uri = "<connection string uri>"; 7 8 const client = new MongoClient(uri); 9 10 async function run() { 11 try { 12 const database = client.db("sample_mflix"); 13 const movies = database.collection("movies"); 14 15 /* Delete the first document in the "movies" collection that matches 16 the specified query document */ 17 const query = { title: "Annie Hall" }; 18 const result = await movies.deleteOne(query); 19 20 /* Print a message that indicates whether the operation deleted a 21 document */ 22 if (result.deletedCount === 1) { 23 console.log("Successfully deleted one document."); 24 } else { 25 console.log("No documents matched the query. Deleted 0 documents."); 26 } 27 } finally { 28 // Close the connection after the operation completes 29 await client.close(); 30 } 31 } 32 // Run the program and print any thrown exceptions 33 run().catch(console.dir);
上記の例を実行すると、次の出力が生成されます。
Successfully deleted one document.
この例を複数回実行すると、最初の実行で一致したドキュメントが削除されるため、コードでは次の出力が生成されます。
No documents matched the query. Deleted 0 documents.
deleteMany() の例: 完全なファイル
注意
セットアップ例
この例では、接続 URI を使用してMongoDBのインスタンスに接続します。 MongoDBインスタンスへの接続の詳細については、「 MongoDBへの接続 」ガイドを参照してください。この例では、 Atlasサンプルデータセット に含まれる sample_mflix
データベースの movies
コレクションも使用します。 「 Atlas を使い始める 」ガイドに従って、 MongoDB Atlasの無料階層のデータベースにロードできます。
次のコードは、多数の削除操作を実行する完全なスタンドアロンファイルです。
1 // Delete multiple documents 2 3 import { MongoClient } from "mongodb"; 4 5 // Replace the uri string with your MongoDB deployment's connection string. 6 const uri = "<connection string uri>"; 7 8 const client = new MongoClient(uri); 9 10 async function run() { 11 try { 12 const database = client.db("sample_mflix"); 13 const movies = database.collection("movies"); 14 15 /* Delete all documents that match the specified regular 16 expression in the title field from the "movies" collection */ 17 const query = { title: { $regex: "Santa" } }; 18 const result = await movies.deleteMany(query); 19 20 // Print the number of deleted documents 21 console.log("Deleted " + result.deletedCount + " documents"); 22 } finally { 23 // Close the connection after the operation completes 24 await client.close(); 25 } 26 } 27 // Run the program and print any thrown exceptions 28 run().catch(console.dir);
1 // Delete multiple documents 2 3 import { MongoClient } from "mongodb"; 4 5 // Replace the uri string with your MongoDB deployment's connection string 6 const uri = "<connection string uri>"; 7 8 const client = new MongoClient(uri); 9 10 async function run() { 11 try { 12 const database = client.db("sample_mflix"); 13 const movies = database.collection("movies"); 14 15 /* Delete all documents that match the specified regular 16 expression in the title field from the "movies" collection */ 17 const result = await movies.deleteMany({ title: { $regex: "Santa" } }); 18 19 // Print the number of deleted documents 20 console.log("Deleted " + result.deletedCount + " documents"); 21 } finally { 22 // Close the connection after the operation completes 23 await client.close(); 24 } 25 } 26 // Run the program and print any thrown exceptions 27 run().catch(console.dir);
上記の例を初めて実行すると、次の出力が生成されます。
Deleted 19 documents
この例えを複数回実行すると、最初の実行で一致したドキュメントが削除されるため、次の出力が表示されます。
Deleted 0 documents
API ドキュメント
このガイドで説明した型やメソッドの詳細については、次の API ドキュメントを参照してください。