今回は、一括登録/一括更新処理(upsert)を行います。
一括登録/一括更新処理(upsert)
順次処理で一括登録/一括更新処理(upsert)を行います。
upsert処理では該当するデータが存在する場合は更新を行い、該当するデータがない場合は登録を行います。
(並列処理で実行したい場合は、initializeOrderedBulkOp()の代わりにinitializeUnorderedBulkOp()を使います。)
処理の詳細は以下の通りです。
- Bulk実行タイプを設定。(1行目)
- upsertクエリーを設定。(3~6行目)
前半の3件が更新処理で、最後の1件が登録処理になります。 - 一括実行(Bulk実行)。(8行目)
[Mongoシェル]
1 | > var bulk = db.member.initializeOrderedBulkOp() |
前半の3ドキュメントに関してはデータが存在していたので、既存データにageフィールドが追加されています。
最後の1ドキュメントに関してはデータが存在していなかったため、新規ドキュメントとしてデータが追加されています。
Pythonで操作
上記の処理をPythonで行うと、次のようになります。
[ソースコード]
1 | import pymongo |
Pythonでupsert処理を行う場合は、UpdateOneを使ってupsert=Trueオプションを追加します。
次回は、一括削除処理(remove)を行います。