pymongo中$exists用false报错/False无返回及字段存在性校验问题
pymongo校验字段是否存在的正确写法
代码里的两处错误
- 语法错误:
find是集合对象的调用方法,必须用圆括号包裹查询参数,你写的col.find{...}缺少了方法调用的圆括号,这是首次运行直接报错的核心原因 - 布尔值规范:MongoDB原生shell语法里用小写
true/false,但pymongo作为Python驱动,所有布尔参数要使用Python原生的大写True/False,你后续修改布尔值的操作是正确的,但因为前面的语法错误没有修复,所以查询没有正常执行。
正确的查询写法
查询IAM字段不存在的文档
[doc for doc in col.find({"IAM": {"$exists": False}})]
查询IAM字段存在的文档
[doc for doc in col.find({"IAM": {"$exists": True}})]
无返回结果的排查方向
如果修正语法后还是没有返回结果,可以按以下顺序排查:
- 确认集合内确实存在不含
IAM字段的文档,可先调用col.find_one()输出随机文档结构,核对字段名的拼写、大小写是否完全匹配 - 确认当前连接的数据库、集合是目标操作的库表,没有连错测试/生产环境
内容的提问来源于stack exchange,提问作者user15780176
相关产品推荐
相关产品推荐

