我想更新不包含特定字段的集合中的每条记录。
以下查询可使用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)));
答案 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
}