MongoDB中比较两个字段:删除income per annum大于savings per annum的文档
在MongoDB中比较文档属性并删除符合条件的文档
要查找并删除所有"income per annum"(年收入)大于"savings per annum"(年储蓄)的文档,核心是利用MongoDB的$expr操作符实现同一文档内两个字段的比较,具体操作如下:
1. 先验证符合条件的文档
执行删除前,建议先查询确认目标文档:
db.your_collection_name.find({ $expr: { $gt: ["$income per annum", "$savings per annum"] } })
替换your_collection_name为你的集合名称。$expr允许在查询条件中使用聚合表达式,$gt用于判断第一个字段值是否大于第二个字段值。
2. 批量删除符合条件的文档
确认无误后,使用deleteMany批量删除:
db.your_collection_name.deleteMany({ $expr: { $gt: ["$income per annum", "$savings per annum"] } })
该命令会一次性删除所有满足条件的文档,执行效率更高。
3. 逐文档删除(可选)
如果需要逐个处理或记录删除的文档,可使用find配合forEach:
db.your_collection_name.find({ $expr: { $gt: ["$income per annum", "$savings per annum"] } }).forEach(doc => { // 可在此添加日志或额外处理逻辑 db.your_collection_name.deleteOne({ _id: doc._id }); })
内容的提问来源于stack exchange,提问作者Mohammad Zeya Ahmad
相关产品推荐
相关产品推荐

