更新MongoDb c#中的多个文档-更新数组
我想更新集合中的文档集合,我不只是想更新实体上的一个字段,而是整个实体>我目前正在使用UpdateAsync逐个进行更新,但这对于多个实体来说非常缓慢更新MongoDb c#中的多个文档-更新数组,c#,mongodb,mongodb-query,C#,Mongodb,Mongodb Query,我想更新集合中的文档集合,我不只是想更新实体上的一个字段,而是整个实体>我目前正在使用UpdateAsync逐个进行更新,但这对于多个实体来说非常缓慢 public class Car { public string Id {get;set;} public IEnumerable<string> Coulors {get;set;} // updated public IEnumerable<Model> Models {get;set;} //
public class Car
{
public string Id {get;set;}
public IEnumerable<string> Coulors {get;set;} // updated
public IEnumerable<Model> Models {get;set;} // updated
public string Name {get;set;} // Not set
}
public async void UpdateMany(IEnumerable<Car> cars)
{
var filter = Builders<Car>.Filter.In(x => x.Id, cars.Select(x => x.Id));
var update = Builders<Car>.Update.Set(x =< x.Colours , ??);
//var update2 = Builders<Car>.Update.Set(x =< x.Models, ??);
var options = new UpdateOptions { IsUpsert = true };
return await DbSet.UpdateManyAsync(filter, update, options);
}
公车
{
公共字符串Id{get;set;}
公共IEnumerable Coulors{get;set;}//已更新
公共IEnumerable模型{get;set;}//已更新
公共字符串名称{get;set;}//未设置
}
公共异步void UpdateMany(IEnumerable cars)
{
var filter=Builders.filter.In(x=>x.Id,cars.Select(x=>x.Id));
var update=Builders.update.Set(x=
听起来你想要“替换”-谢谢,但我不是特别想为performance reasonsOK做一个批量更新,所以你有一堆文档,你想用一个新文档替换所有文档吗?例如,第1辆车是红色保时捷911,第2辆车是绿色本田思域,第3辆车是蓝色丰田rav4,您想更新整个实体,以便所有3辆车现在都是银色雪佛兰camaros?我很难理解你所说的“我不只是想更新实体上的一个字段,而是整个实体”-可能在你的更改前后发布两个示例文档?对不起,我不清楚,我有一堆文档要一次性替换,我希望使用UpdateMany…过滤器上有索引吗?您到底在更改什么-如果您更改整个文档,那么您将一次又一次地得到同一文档的集合。之前和之后都有样本文档将有助于理解您正在尝试做什么。我正在更改对象上的两个集合颜色字符串[]和一个模型,它是一个模型数组。然后还有一个或两个其他字段我没有更新。是的,每个对象上都有一个Id