c# - MongoDB 使用 C# 驱动程序根据数组中的第 N 个值更新多条记录

标签 c# mongodb

假设我在集合中有以下文档:

[{ id:1, items: [1, 4, 1], flag:false},
{ id:2, items: [3, 1, 3], flag:false },
{ id:3, items: [2, 4, 6], flag:false },
{ id:4, items: [8, 7, 2], flag:false }]

如果 items[1] == 4,我需要将 flag 设置为 true。 因此,更新后集合的状态将是:

{ id:1, items: [1, 4, 1], flag:true},
{ id:2, items: [3, 1, 3], flag:false },
{ id:3, items: [2, 4, 6], flag:true},
{ id:4, items: [8, 7, 2], flag:false }

如何使用 C# 驱动程序执行此操作?

谢谢!

最佳答案

如果您使用的是第二版 MongoDB.Driver (2.0.0-beta2),您可以这样做:

var client = new MongoClient(connectionString);
var database = client.GetDatabase("test");
var collection = database.GetCollection<Entity>("entities");

await collection.UpdateManyAsync(
    filter => filter.Items[1] == 4,
    update => update.Set(ent => ent.Flag, true));

假设您有实体类:

public class Entity
{
    public int Id { get; set; }
    public List<int> Items { get; set; }
    public bool Flag { get; set; }
}

关于c# - MongoDB 使用 C# 驱动程序根据数组中的第 N 个值更新多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28551790/

相关文章:

c# - "Thread was being aborted."在测试中,测试在后台线程上触发委托(delegate)的代码

c# - 在 MVC.Net 中链接 lambda 表达式,而无需重复传递 HtmlHelper 对象

javascript - 在 C# 中调用 Javascript 函数

c# - 提高 DrawingContext 性能渲染几何(多边形和折线)

c# - 为什么 WCF 服务契约接口(interface)的对象可以转换为 IClientChannel

javascript - 映射中的 Object.assign 返回带有额外信息的意外响应

mongodb - 使用 mgo 更新插入到分片 MongoDB 错误 "full shard key must be in update object for collection:..."

MongoDB 根据最新日期查询多个不同的值

mongodb - 在谷歌云平台上部署mongodb?

mongodb - 从 AMI 创建实例会将 mongodb 日志大小增加到 3GB