使用MongoDB C#驱动程序更新列表内的字段

时间:2019-02-04 07:27:21

标签: c# mongodb mongodb-.net-driver

我有多个这样的MongoDB文档:

{
    "_id":"abcde",
    "Students":[
        {"Name":"John","IsNew":true},
        {"Name":"Steve","IsNew":true}
    ],
}

{
    "_id":"fghij",
    "Students":[
        {"Name":"Ron","IsNew":true},
        {"Name":"Mike","IsNew":true}
    ],
}

如何使用C#驱动程序将每个文档的所有学生的IsNew字段更新为false?

1 个答案:

答案 0 :(得分:1)

您可以将MongoDB C#驱动程序中的UpdateMany方法与positional all运算符一起使用:

var filter = Builders<YourModel>.Filter.Exists(x => x.Students);

FieldDefinition<YourModel, bool> field = "Students.$[].IsNew";
var update = Builders<YourModel>.Update.Set(field, false);

Col.UpdateMany(filter, update);

编辑:您可以使用.Exists()作为过滤器,以确保所有正在更新的文档中都存在Students数组