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

MongoDB motor查询:如何筛选指定字段为null或不存在的文档

正确的查询实现

你可以选择以下两种写法实现需求:

写法1:利用MongoDB原生null匹配特性(最简洁)

MongoDB中直接将字段匹配None时,会自动命中「字段不存在」和「字段存在且值为null」两种场景,刚好符合你对archived_at的筛选要求,代码如下:

# "$type": 10 仅匹配validated_at存在且值为null的文档
# archived_at: None 匹配字段不存在 或 字段值为null的文档
await db.fdeses.find({
    'validated_at': {"$type": 10},
    'archived_at': None
}).to_list(CURSOR_LIMIT)

写法2:显式用$or声明两种条件(语义更清晰)

如果你需要明确区分两种判断逻辑,也可以用$or写全两个条件,注意$or对应的是数组格式的条件列表:

await db.fdeses.find({
    'validated_at': {"$type": 10},
    "$or": [
        {'archived_at': {"$exists": False}},
        {'archived_at': {"$type": 10}}
    ]
}).to_list(CURSOR_LIMIT)

之前$or不生效大概率是层级写错,没有把两个archived_at的判断放到$or对应的数组里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:15:03