MongoDB数组中存在异常格式数据时如何使用$pull操作删除
MongoDB移除subscriptions数组异常项操作方案
你可以通过匹配异常数据的字段特征,使用$pull操作符完成删除,操作如下:
核心执行语句
db.你的集合名.updateMany( // 第一个参数为文档筛选条件,空值代表处理全集合所有文档 {}, { $pull: { "company.subscriptions": { // 匹配异常项特征:无name字段 + 存在顶级services字段 name: { $exists: false }, services: { $exists: true } } } } )
可选精准匹配方案
如果需要进一步缩小匹配范围避免误删,可以加上services.1字段的存在校验:
db.你的集合名.updateMany( {}, { $pull: { "company.subscriptions": { name: { $exists: false }, "services.1": { $exists: true } } } } )
前置校验提示
执行删除类操作前,请先执行find语句验证匹配结果是否为目标异常数据,避免误操作:
db.你的集合名.find({ "company.subscriptions": { $elemMatch: { name: { $exists: false }, services: { $exists: true } } } })
内容的提问来源于stack exchange,提问作者Yves Gonzaga
相关产品推荐
相关产品推荐

