You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PyMongo按两个条件执行delete_many删除操作?

解决PyMongo delete_many多条件删除无效的问题

核心错误点

你的代码存在两个关键问题:

  1. 参数传递错误:PyMongo的delete_many()方法第一个参数是完整的查询条件,第二个参数是可选的配置项(如collation、hint等),不能将第二个查询条件单独作为第二个参数传入。这和mongosh的使用习惯不同,导致第一个写法完全不生效。
  2. $exists参数类型错误:{"$exists": "false"}中使用了字符串"false",但MongoDB的$exists操作符要求传入布尔值(Python中为False)。字符串"false"会被当作字段值匹配,而非判断字段是否存在,因此无法找到目标记录。

正确代码示例

方式一:默认逻辑与(推荐)

MongoDB对同一文档中的多个条件默认是逻辑与关系,无需显式使用$and:

db.hashes.delete_many(
    {"highlights": {"$exists": False}, "last_pulled": {"$lte": purgeDate}}
)

方式二:显式$and(适用于字段冲突场景)

如果需要明确强调逻辑与(比如同一字段有多个条件),修正参数类型后的写法也可生效:

db.hashes.delete_many(
    {"$and": [{"highlights": {"$exists": False}}, {"last_pulled": {"$lte": purgeDate}}]}
)

验证说明

单独使用last_pulled条件能正常删除,说明日期逻辑是正确的,修正highlights的查询条件后,两个条件即可共同生效,筛选出同时满足「highlights字段不存在」和「last_pulled早于清理日期」的文档并删除。

内容的提问来源于stack exchange,提问作者x0xchoc0late

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:40:49