在不存在字段的情况下更新MongoDB集合

时间:2019-06-21 14:28:47

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

我想更新不包含特定字段的集合中的每条记录。

以下查询可使用Mongo shell进行,但我正努力使用.Net中的mongoDB.Driver编写此查询。

db.Comments.update(
    { MemberRoleType: { $exists: false }},
    { $set: { MemberRoleType: 4 },
    { multi: true }
)

我尝试了以下各种方法,但无法达到我想要的结果:

await comments.UpdateManyAsync(c => c.MemberRoleType == 0, Builders<Comment>.Update.Set(x => x.MemberRoleType, ContentRoleType.Online)));

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找存在

Builders<Comments>.Filter.Exists(x => x.MemberRoleType, false);

您应该能够像这样使用它

var filter = Builders<Comments>.Filter.Exists(x => x.MemberRoleType, false);
await comments.UpdateManyAsync(filter, Builders<Comment>.Update.Set(x => x.MemberRoleType, ContentRoleType.Online)));

依次生成此查询

{
        "q": {
            "MemberRoleType": {
                "$exists": false
            }
        },
        "u": {
            "$set": {
                "MemberRoleType": 4
            }
        },
        "multi": true
}