バージョン2 MongoDB C#ドライバーの場合、IsUpsert
を設定する必要があります 書き込みコマンドのフラグ。この例では、ドキュメント全体をアップサートします。
var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
var result = await collection.ReplaceOneAsync(
filter: new BsonDocument("_id", 123),
options: new ReplaceOptions { IsUpsert = true },
replacement: newDoc);
バージョン1 MongoDB C#ドライバーのは、Save
内にこのロジックを実装します 指図。
var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
collection.Save(newDoc);
Saveメソッドは、InsertとUpdateを組み合わせたものです。 ドキュメントのIdメンバーに値がある場合、それは既存のドキュメントであると見なされ、Saveはドキュメントに対してUpdateを呼び出します(実際に新しいドキュメントである場合に備えて、Upsertフラグを設定します)。それ以外の場合は、新しいドキュメントであると見なされ、新しく生成された一意の値を最初にIdメンバーに割り当てた後、SaveがInsertを呼び出します。
参照:http://mongodb.github.io/mongo-csharp-driver/1.11/driver/#save-tdocument-method
注:ただし、これにはIdフィールドの適切なマッピングが必要です。詳細については、こちらをご覧ください:http://mongodb.github.io/mongo-csharp-driver/1.11/serialization/#identifying-the-id-field-or-property