c# - 更新字段不存在的 MongoDB 集合
问题描述
我想更新集合中不包含特定字段的每条记录。
以下查询使用 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)));
解决方案
我相信你正在寻找的存在
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
}
推荐阅读
- visual-c++ - 将 CTaskDialog 的主图标设置为问题?
- python - DataFrame时间间隔外推
- python - 根据列中是否存在特定字符“+”过滤数据帧的行
- r - 在 R 中拟合具有交互作用的 Fine-Gray 模型(包 RiskRegression - 函数 FGR)
- oauth - URL 参数中 OAuth 的 client_secret
- sql - SQL Server - 在一天内生成满足相同条件的列值
- java - 如何在使用spring boot创建多个数据源时忽略setpackagestoscan中的一个或多个包
- kubernetes - Couchbase cbbackup 从远程服务器失败
- android - IllegalStateException:在 ViewPager2 有适配器之前附加 TabLayoutMediator
- templates - PRESTASHOP 1.7.6:在网站的所有页面上显示单价,而不仅仅是在产品页面上