23

プロジェクトで MongoDB .Net ドライバーを使用しています。MongoDB に保存されているオブジェクトのすべてのプロパティを更新したいと考えています。ドキュメントでは、更新は次のように示されています。

var filter = Builders<BsonDocument>.Filter.Eq("i", 10);
var update = Builders<BsonDocument>.Update.Set("i", 110);

await collection.UpdateOneAsync(filter, update);

Setしかし、多くのプロパティがあり、将来さらに多くのプロパティが存在する可能性があるため、すべてのプロパティに対してメソッドを呼び出したくはありません。

MongoDB .Net ドライバーを使用してオブジェクト全体を更新するにはどうすればよいですか?

4

3 に答える 3

5
var update = new BsonDocument("$set", new BsonDocument(entityType.GetProperties().Where(p => p.Name != "Id").Select(p => new KeyValuePair<string, object>(p.Name, entityType.GetProperty(p.Name).GetValue(task, null)))));
var options = new UpdateOptions();
collection.UpdateOne<MyTask>(item => item.Name == "cheque", update, options);

このコードはリフレクションを使用して、指定されたオブジェクトのすべてのプロパティを
update ステートメントに含めます。すべてのプロパティを手動で追加する必要はありません。例外を回避するために、id が update ステートメントから明示的に除外されていることがわかります。

于 2018-02-28T14:32:39.037 に答える