MongoDB C# 驱动程序2.0更新文档

目前我更新代码 MongoDB C# driver 2.0, 我有问题更新要更新文档的代码。

使用旧版本,我能够这样做:


MyType myObject; // passed in 
var collection = _database.GetCollection<mytype>/"myTypes"/;
var result = collection.Save/myObject/;


我正试图找到一种在新版本中执行此操作的方法。
我找到了更新各个字段的几个例子,例如


var filter = Builders<mytype>.Filter.Eq/s =&gt; s.Id, id/;
var update = Builders<mytype>.Update.Set/s =&gt; s.Description, description/;
var result = await collection.UpdateOneAsync/filter, update/;


我想使用该方法更新旧版本中的所有字段 Save.

有任何想法吗 ?

非常感谢
</mytype></mytype></mytype>
已邀请:

帅驴

赞同来自:

我想你正在寻找
ReplaceOneAsync//

:


MyType myObject; // passed in 
var filter = Builders<mytype>.Filter.Eq/s =&gt; s.Id, id/;
var result = await collection.ReplaceOneAsync/filter, myObject/


</mytype>

董宝中

赞同来自:

添加到答案mnemozin,同时简单
ReplaceOneAsync

更新文档,它不等同
Save

, 只要
Save

如果我没有找到更新,也会插入文档。

实现相同的行为
ReplaceOneAsync

, 您需要使用参数 options:


MyType myObject; 
var result = await collection.ReplaceOneAsync/
item => item.Id == id,
myObject,
new UpdateOptions {IsUpsert = true}/;

奔跑吧少年

赞同来自:

您可以使用 LINQ 通过以下方式:


await context.collection.ReplaceOneAsync/b=> b.Id == item.Id,item/;

要回复问题请先登录注册