ドキュメントの更新
collection.updateOne() メソッドを使用して単一のドキュメントを更新できます使用して複数のドキュメントを挿入できます。 updateOne()
メソッドは フィルター ドキュメント と アップデート ドキュメントを受け入れます。 クエリがコレクション内のドキュメントを照合する場合、メソッドは更新ドキュメントからの更新を照合するドキュメントのフィールドと値に適用します。 更新ドキュメントには、照合対象に対する変更をメソッドに指示する 演算子が含まれています。
updateOne()
メソッドの 2 番目のパラメータとして渡されるoptions
オブジェクトを使用して、追加のクエリ オプションを指定できます。 フィルターに一致するドキュメントがない場合に新しいドキュメントを作成するには、 upsert
オプションをtrue
に設定します。 詳細については、 updateOne() API ドキュメント を参照してください。
updateOne()
は、実行中にエラーが発生した場合に例外をスローします。更新ドキュメントで不変フィールド _id
の値を指定すると、メソッドは例外をスローします。更新ドキュメントにユニークインデックスのルールに違反する値が含まれている場合、メソッドは duplicate
key error
例外をスローします。
注意
アプリケーションで更新後にドキュメントが必要な場合は、 collection.findOneAndUpdate() 。メソッド。これはupdateOne()
と似たインターフェースですが、元のドキュメントまたは更新されたドキュメントも返します。
例
次の例では、ドキュメント フィールドの更新値を指定する $set
更新演算子を使用しています。更新演算子の詳細については、「MongoDB 更新演算子のリファレンス ドキュメント」を参照してください。
注意
この例を使用して、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 const database = client.db("sample_mflix"); 11 const movies = database.collection("movies"); 12 13 // create a filter for a movie to update 14 const filter = { title: "Random Harvest" }; 15 16 // this option instructs the method to create a document if no documents match the filter 17 const options = { upsert: true }; 18 19 // create a document that sets the plot of the movie 20 const updateDoc = { 21 $set: { 22 plot: `A harvest of random numbers, such as: ${Math.random()}` 23 }, 24 }; 25 26 const result = await movies.updateOne(filter, updateDoc, options); 27 console.log( 28 `${result.matchedCount} document(s) matched the filter, updated ${result.modifiedCount} document(s)`, 29 ); 30 } finally { 31 await client.close(); 32 } 33 } 34 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 plot: string; 10 title: string; 11 } 12 13 async function run() { 14 try { 15 const database = client.db("sample_mflix"); 16 const movies = database.collection<Movie>("movies"); 17 18 const result = await movies.updateOne( 19 { title: "Random Harvest" }, 20 { 21 $set: { 22 plot: `A harvest of random numbers, such as: ${Math.random()}`, 23 }, 24 }, 25 { upsert: true } 26 ); 27 console.log( 28 `${result.matchedCount} document(s) matched the filter, updated ${result.modifiedCount} document(s)` 29 ); 30 } finally { 31 await client.close(); 32 } 33 } 34 run().catch(console.dir);
上記の例を実行すると、次の出力が表示されます。
1 document(s) matched the filter, updated 1 document(s)