Tip
MongoDB は、一括書込み操作を実行するための db.collection.bulkWrite() メソッドも提供します。
説明
Bulk.find.updateOne(<update>)一括操作リストに 1 つのドキュメントのアップデート操作を追加します。
Bulk.find()メソッドを使用して、アップデートするドキュメントを決定する条件を指定します。Bulk.find.updateOne()メソッドは更新を 1 つのドキュメントに制限します。 複数のドキュメントを更新するには、Bulk.find.update()を参照してください。Bulk.find.updateOne()は、次のパラメーターを受け入れます。Parameterタイプ説明ドキュメントまたはパイプライン
適用される変更内容。次のいずれかになります。
置換ドキュメント
フィールドと値のペアのみが含まれます。
Update document
更新演算子式のみが含まれます。
Aggregation Pipeline
次の集計ステージのみが含まれます。
$addFieldsおよびそのエイリアス$set$replaceRootとそのエイリアス$replaceWith。
update 変更パラメーターの詳細については、
db.collection.updateOne()のリファレンス ページを参照してください。Bulk.find()からの関連<query>ドキュメントと更新ドキュメントの合計は、BSON ドキュメントの最大サイズ以下である必要があります。この操作について upsert: true を指定するには、
Bulk.find.upsert()を使用します。特定の配列要素を更新するために
arrayFiltersを指定するには、Bulk.find.arrayFilters()とともに使用します。関連する
Bulk.find()に使用するインデックスを指定するには、Bulk.find.hint()を参照してください。ドキュメントをまとめて置換するには、
Bulk.find.replaceOne()も参照してください。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
動作
<update>ドキュメントに更新演算子式のみが含まれている場合は、次のようになります。
{ $set: { status: "D" }, $inc: { points: 2 } }
次に、 Bulk.find.updateOne()はドキュメント内の対応するフィールドであるstatusとpointsのみを更新します。
例
次の例では、 itemsコレクションでBulk()操作ビルダを初期化し、さまざまなupdateOne()操作を操作リストに追加します。
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "D" } ).updateOne( { $set: { status: "I", points: "0" } } ); bulk.execute();
集約パイプラインによるアップデート
更新メソッドは集計パイプラインを受け入れることができます。 たとえば、次の例では次のものが使用されています。
集計変数
NOWは現在の日時を解決し、$currentDate更新演算子式と同様に動作します。集計変数にアクセスするには、変数の前に二重ドル記号$$を付け、引用符で囲みます。
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "P" } ).updateOne( [ { $set: { points: 0, lastModified: "$$NOW" } } ] ); bulk.execute();