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

MongoDB使用$type查询object类型时误返回数组文档如何解决

你的操作没有语法错误,返回结果不符合预期是MongoDB $type 查询运算符的默认特性导致的:

当待查询的字段值为数组时,$type 会同时匹配两种情况:字段本身的类型符合要求,或者数组内的任意元素类型符合要求。

你执行db.collection.find( {a: { $type: "object"}} )时,id为1的文档a字段是数组,数组内的元素为object类型,命中了上述匹配规则,因此也被返回。

如果要仅匹配a字段本身为object类型的文档,排除字段为数组的场景,可以使用$expr结合聚合版本的$type运算符实现,聚合版$type只会返回字段自身的类型,不会递归检查数组内的元素:

db.collection.find({
  $expr: {
    $eq: [ { $type: "$a" }, "object" ]
  }
})

该查询只会返回id为2的文档,匹配你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:36:03