MongoDB 使用 C# 驱动程序根据数组中的第 N 个值更新多条记录
MongoDB Updating multiple records based on the Nth value in an array using the C# driver
假设我在一个集合中有以下文档:
[{ 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#
驱动程序执行此操作?
谢谢!
使用此查询通过 mongo shell
进行更新
db.test.update({'items.1' : 4}, { $set : { flag : true}}, {multi : true})
C# 代码为:
var url = new MongoUrl("mongodb://localhost:27017");
var client = new MongoClient(url);
var server = client.GetServer();
var database = server.GetDatabase("test");
var collection = database.GetCollection("test");
var query = Query.EQ("items.1", 4);
var update = Update.Set("flag", true);
collection.Update(query, update, UpdateFlags.Multi);
如果您使用的是 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));
假设您有 实体 class:
public class Entity
{
public int Id { get; set; }
public List<int> Items { get; set; }
public bool Flag { get; set; }
}
假设我在一个集合中有以下文档:
[{ 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#
驱动程序执行此操作?
谢谢!
使用此查询通过 mongo shell
进行更新db.test.update({'items.1' : 4}, { $set : { flag : true}}, {multi : true})
C# 代码为:
var url = new MongoUrl("mongodb://localhost:27017");
var client = new MongoClient(url);
var server = client.GetServer();
var database = server.GetDatabase("test");
var collection = database.GetCollection("test");
var query = Query.EQ("items.1", 4);
var update = Update.Set("flag", true);
collection.Update(query, update, UpdateFlags.Multi);
如果您使用的是 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));
假设您有 实体 class:
public class Entity
{
public int Id { get; set; }
public List<int> Items { get; set; }
public bool Flag { get; set; }
}