Ale*_*llo 29 c# mongodb mongodb-csharp-2.0 mongodb-.net-driver
我目前正在将我的代码升级到MongoDB C#驱动程序2.0,并且我在升级代码以更新文档时遇到问题.
使用旧版本,我能够做到这样的事情:
MyType myObject; // passed in
var collection = _database.GetCollection<MyType>("myTypes");
var result = collection.Save(myObject);
Run Code Online (Sandbox Code Playgroud)
我很难在新版本中找到一种方法.我找到了一些更新单个字段的例子
var filter = Builders<MyType>.Filter.Eq(s => s.Id, id);
var update = Builders<MyType>.Update.Set(s => s.Description, description);
var result = await collection.UpdateOneAsync(filter, update);
Run Code Online (Sandbox Code Playgroud)
我想用旧方法更新所有字段,方法是Save.
有任何想法吗 ?
非常感谢
mne*_*syn 26
我想你正在寻找ReplaceOneAsync()
:
MyType myObject; // passed in
var filter = Builders<MyType>.Filter.Eq(s => s.Id, id);
var result = await collection.ReplaceOneAsync(filter, myObject)
Run Code Online (Sandbox Code Playgroud)
i3a*_*non 26
为了增加mnemosyn的答案,同时简单的ReplaceOneAsync
做更新文档是不等同于Save
为Save
也将插入文档,如果它没有找到一个更新.
要实现相同的行为,ReplaceOneAsync
需要使用options参数:
MyType myObject;
var result = await collection.ReplaceOneAsync(
item => item.Id == id,
myObject,
new UpdateOptions {IsUpsert = true});
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以按如下方式使用 LINQ:
await context.collection.ReplaceOneAsync(b=> b.Id == item.Id,item);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38446 次 |
最近记录: |