更新 MongoDB 字段不存在的集合

Update MongoDB collection where field doesn't exist

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

以下查询使用 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)));

我相信你正在寻找 exists

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
}