2017-02-28 17 views
2

私は小さなプロジェクトでMongoDbを使用するためにC#ドライバを使用していましたが、今はドキュメントの更新に取り組んでいます。 フィールドAVG(int型)ここでmongodbドキュメントの特定のフィールドを更新

を更新する方法を把握しようとしている私のコードは次のとおりです。

IMongoCollection<Student> studentCollection = db.GetCollection<Student>("studentV1"); 

Student updatedStudent = new Student() { AVG = 100, FirstName = "Shmulik" }); 

studentCollection.UpdateOne(
     o=>o.FirstName == student.FirstName, 
      **<What should I write here?>**); 

方法ReplaceOne(updatedStudent)のように、特定のフィールドを更新するためのシンプルでクリーンな方法はありますか?

+0

私はあなたがmongodbドキュメントを読むべきだと思っています、それはC#ドライバを使用してアップデートに関連するすべてのシナリオをカバーしています。 https://docs.mongodb.com/getting-started/csharp/update/ – Aby

答えて

1

これを試してみてください。.. & for more info

IMongoCollection<Student> studentCollection = db.GetCollection<Student>("studentV1"); 

Student updatedStudent = new Student() { AVG = 100, FirstName = "Shmulik" }); 

var update = Update<Student>. 
Set(s => s.AVG, "500"). 
Set(s => s.FirstName, "New Name"); 
1

OK、そう分かった書き込み文字列なしでそれを行うための簡単な方法は、すべてのコードの上にあります(プロパティ名):

var updateDef = Builders<Student>.Update.Set(o => o.AVG, student.AVG); 

studentCollection.UpdateOne(o => o.FirstName == student.FirstName, updateDef); 

私はdidnの見つけるのがずっと時間がかかることを知っています(+2日)が、最終的に見つかったのはthis answer です。

var filter = Builders<TempAgenda>.Filter.Eq(x => x.AgendaId, agendaId); 
var update = Builders<TempAgenda>.Update.Set(x => x.Items.Single(p => p.Id.Equals(itemId)).Title, title); 
var result = _collection.UpdateOneAsync(filter, update).Result; 

と今はずっと簡単です。

関連する問題