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

MongoDB如何筛选含动态键数组对象中存在image字段的文档

筛选包含image字段的文档解决方案

针对你这种post字段存在动态命名键的情况,可以利用MongoDB的表达式操作符实现筛选,具体查询语句如下:

db.collection.find({
  $expr: {
    $gt: [
      {
        $size: {
          $filter: {
            input: { $objectToArray: "$post" },
            cond: {
              $anyElementTrue: {
                $map: {
                  input: "$$this.v",
                  as: "item",
                  in: { $ifNull: ["$$item.image", false] }
                }
              }
            }
          }
        }
      },
      0
    ]
  }
})

代码说明:

  • $objectToArray: "$post":将post对象转换为键值对数组,结构类似[{k: "dynamicone", v: [...]}, {k: "comments", v: [...]}]
  • $filter:遍历转换后的数组,筛选出符合条件的键值对
  • $anyElementTrue 配合 $map:检查每个动态键对应的数组中,是否存在包含image字段的元素($ifNull会在元素有image字段时返回对应值,否则返回false,只要有一个元素满足就返回true)
  • $size 与 $gt:判断筛选后的数组长度大于0,说明文档中存在符合要求的动态键及image字段

执行该查询后,会返回前两个包含image字段的文档,排除后两个无image字段的文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:45:31