これはばかげた質問かもしれませんが、MongoDBの挿入にupsert
オプションがあることを電子書籍で読みました。これに関する適切なドキュメントが見つかりませんでした。誰かがこれについて教育してもらえますか?
upsert
は、「クエリ条件に一致するドキュメントがない場合に新しいドキュメントを作成する操作として定義されているため」であり、upserts
in insert
コマンド。これは、update
コマンドのオプションです。以下のようなコマンドを実行すると、update
、 query
に一致するドキュメントがある場合、またはinsert
として記述されたドキュメントを持つupdate
として機能します。引数 。
db.collection.update(query, update, {upsert: true})
MongoDB 3.2は replaceOne
を追加します:
db.collection.replaceOne(query, replacement, {upsert: true})
これは同様の動作をしますが、replacement
には更新演算子を含めることはできません。
PKDが提供するリンクのように、db.collection.insert()
はアップサートの可能性を提供しません。代わりに、mongo insertは新しいドキュメントをコレクションに挿入します。アップサートは、db.collection.update()
およびdb.collection.save()
を使用した場合にのみ可能です。
既にコレクションにあるdb.collection.insert()
にドキュメントを渡し、既存の_id
と同様の_id
を持っている場合、重複キー例外がスローされます。