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

MongoDB筛选serviceCountry为US的gfcidGlobals相关记录

MongoDB筛选serviceCountry为US的gfcidGlobals记录

要实现仅返回serviceCountry等于US的gfcidGlobals记录及其对应对象,可以使用MongoDB的聚合管道处理嵌套的键值对结构,具体查询如下:

db.collection.aggregate([
  {
    $project: {
      gfcidGlobals: { $objectToArray: "$gfcidGlobals" }
    }
  },
  { $unwind: "$gfcidGlobals" },
  { $unwind: "$gfcidGlobals.v" },
  {
    $match: {
      "gfcidGlobals.v.serviceCountry": "US"
    }
  },
  {
    $group: {
      _id: "$_id",
      gfcidGlobals: {
        $push: {
          k: "$gfcidGlobals.k",
          v: "$gfcidGlobals.v"
        }
      }
    }
  },
  {
    $project: {
      gfcidGlobals: { $arrayToObject: "$gfcidGlobals" }
    }
  }
])

代码说明

  • $objectToArray: 将gfcidGlobals的键值对转为[{k: "gfcid值", v: 对应数组}, ...]格式,方便后续遍历
  • $unwind: 两次展开,分别拆解gfcid对应的数组和数组内的每个对象
  • $match: 精准筛选出serviceCountry为US的对象
  • $group: 按文档_id分组,把符合条件的对象重新按gfcid聚合
  • $arrayToObject: 将分组后的数组转回原键值对结构

预期结果

执行上述聚合后,返回结果如下:

[
  {
    "_id": {
      "$oid": "648c0875a25a3a13f1e3e7cf"
    },
    "gfcidGlobals": {
      "789456489": {
        "className": "test123",
        "gfcid": "789456489",
        "companyName": "ABC BRANCH",
        "serviceCountry": "US",
        "kwtPolicyDueDate": {
          "$date": {
            "$numberLong": "1699833600000"
          }
        },
        "kycLobOwner": "BSU",
        "clientType": "BANK"
      }
    }
  }
]

如果需要保留gfcid对应的数组格式(即使仅一个元素),可调整$group阶段的$push逻辑,将v包装为数组:

// 调整后的$group阶段
{
  $group: {
    _id: "$_id",
    gfcidGlobals: {
      $push: {
        k: "$gfcidGlobals.k",
        v: ["$gfcidGlobals.v"]
      }
    }
  }
}

调整后结果会保持原数组结构:

[
  {
    "_id": {
      "$oid": "648c0875a25a3a13f1e3e7cf"
    },
    "gfcidGlobals": {
      "789456489": [
        {
          "className": "test123",
          "gfcid": "789456489",
          "companyName": "ABC BRANCH",
          "serviceCountry": "US",
          "kwtPolicyDueDate": {
            "$date": {
              "$numberLong": "1699833600000"
            }
          },
          "kycLobOwner": "BSU",
          "clientType": "BANK"
        }
      ]
    }
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:06:01