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

如何用PyMongo检测MongoDB集合文档内嵌字典的键值对是否存在

错误成因

  • 你调用的find()方法返回的是PyMongo游标对象,无论是否匹配到文档,游标对象本身转为布尔值永远为True,这是返回结果始终为真的核心原因。
  • $in操作符的作用是匹配值等于列表内的任意元素,你当前的写法只能匹配值为1或者10000的情况,无法实现[1,10000]的区间校验,区间校验需要配合$gte(大于等于)和$lte(小于等于)操作符实现。

修正后代码

def check_for_item(user, item):
    # find_one匹配到文档返回文档对象,未匹配返回None,布尔转换符合需求
    match_doc = db.collection.find_one({
        "uid": user.id,
        f"inv.{item}": {
            "$gte": 1,
            "$lte": 10000
        }
    })
    return bool(match_doc)

逻辑说明

该实现自动覆盖了字段不存在的场景:如果inv下不存在你指定的item键,MongoDB不会将该文档计入匹配结果,find_one返回None,函数最终返回False,完全符合你的校验需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:36:05