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

use*_*011 3 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 }]
Run Code Online (Sandbox Code Playgroud)

我需要设置flagtrueif items[1] == 4.因此,更新后的集合状态将是:

{ 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 }
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Gra*_*ant 5

如果您使用的是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));
Run Code Online (Sandbox Code Playgroud)

假设你有Entity类:

public class Entity
{
    public int Id { get; set; }
    public List<int> Items { get; set; }
    public bool Flag { get; set; }
}
Run Code Online (Sandbox Code Playgroud)