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

MongoDB属性值匹配疑问:为何返回数组文档?如何严格匹配?

MongoDB数组字段匹配问题解答

1. 该行为是否属于bug?

这不是bug,是MongoDB官方明确规定的默认匹配规则:

  • 当查询条件为{ 字段: 值 }时,会同时匹配两种场景:
    • 字段的值直接等于查询值;
    • 字段是数组且包含查询值。
      这种设计是为了简化数组包含查询的写法,无需额外操作符就能快速匹配数组内的元素。

2. 如何实现严格相等匹配?

要仅匹配字段值**完全等于目标值(非数组包含)**的文档,可通过以下两种方式实现:

方式一:结合$eq和$type指定类型与值

{ $match: { prop: { $eq: 1, $type: "int" } } }

注意:如果你的数值类型是double,将"int"替换为"double"即可,需根据实际数据类型调整。

方式二:使用$expr表达式同时校验值和类型

{ $match: {
    $expr: {
        $and: [
            { $eq: ["$prop", 1] },
            { $eq: [{ $type: "$prop" }, "int"] }
        ]
    }
} }

这种方式更灵活,适合需要自定义复杂匹配逻辑的场景。

内容的提问来源于stack exchange,提问作者Mo B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:01:04