ドキュメントの置き換え
collection.replaceOne() メソッドを使用して単一のドキュメントを置き換えることができます使用して複数のドキュメントを挿入できます。 replaceOne()
はクエリ ドキュメントと置換ドキュメントを受け入れます。 クエリがコレクション内のドキュメントと一致する場合は、クエリに一致する最初のドキュメントが指定された置換ドキュメントで置き換えられます。 この操作により、元のドキュメント内のすべてのフィールドと値が削除され、置換ドキュメントのフィールドと値に置き換えられます。 置換ドキュメントで_id
に明示的に指定しない限り、 _id
フィールドの値は同じままです。
任意のoptions
パラメータを使用して、 upsert
などの追加オプションを指定できます。 upsert
オプション フィールドをtrue
に設定すると、クエリに一致するドキュメントがない場合、このメソッドは新しいドキュメントを挿入します。
replaceOne()
メソッドは、実行中にエラーが発生した場合に例外をスローします。 たとえば、一意なインデックスのルールに違反する値を指定すると、 replaceOne()
はduplicate key error
をスローします。
注意
アプリケーションで更新後にドキュメントが必要な場合は、 collection.findOneAndReplace()メソッドとして、 replaceOne()
と同様のインターフェースを持つものです。 findOneAndReplace()
を構成して、元の一致したドキュメントまたは置換ドキュメントを返すことができます。
例
注意
この例を使用して、MongoDB のインスタンスに接続し、サンプルデータを含むデータベースと交流できます。MongoDB インスタンスへの接続とサンプルデータセットの読み込みの詳細については、 使用例ガイドを参照してください。
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 async function run() { 9 try { 10 11 // Get the database and collection on which to run the operation 12 const database = client.db("sample_mflix"); 13 const movies = database.collection("movies"); 14 15 // Create a query for documents where the title contains "The Cat from" 16 const query = { title: { $regex: "The Cat from" } }; 17 18 // Create the document that will replace the existing document 19 const replacement = { 20 title: `The Cat from Sector ${Math.floor(Math.random() * 1000) + 1}`, 21 }; 22 23 // Execute the replace operation 24 const result = await movies.replaceOne(query, replacement); 25 26 // Print the result 27 console.log(`Modified ${result.modifiedCount} document(s)`); 28 } finally { 29 await client.close(); 30 } 31 } 32 run().catch(console.dir);
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 interface Movie { 9 title: string; 10 } 11 12 async function run() { 13 try { 14 const database = client.db("sample_mflix"); 15 const movies = database.collection<Movie>("movies"); 16 17 const result = await movies.replaceOne( 18 { title: { $regex: "The Cat from" } }, 19 { 20 title: `The Cat from Sector ${Math.floor(Math.random() * 1000) + 1}`, 21 } 22 ); 23 console.log(`Modified ${result.modifiedCount} document(s)`); 24 } finally { 25 await client.close(); 26 } 27 } 28 run().catch(console.dir);
上記の例を実行すると、次の出力が表示されます。
Modified 1 document(s)