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

如何查询MongoDB集合内各字段对应的BSON数据类型

MongoDB无预指定属性查询全量字段BSON类型方法

直接执行以下聚合查询即可,将<your_collection>替换为实际集合名:

db.<your_collection>.aggregate([
  // 将文档转换为键值对数组
  { $project: { kv: { $objectToArray: "$$ROOT" } } },
  // 拆分每个键值对为独立记录
  { $unwind: "$kv" },
  // 按字段名分组,聚合该字段所有出现过的BSON类型
  {
    $group: {
      _id: "$kv.k",
      bsonTypeSet: { $addToSet: { $type: "$kv.v" } }
    }
  },
  // 输出格式调整为 字段名 - 类型 样式
  {
    $project: {
      _id: 0,
      result: {
        $concat: [
          "$_id",
          " - ",
          { $join: [", ", "$bsonTypeSet"] }
        ]
      }
    }
  },
  // 按字段名排序输出
  { $sort: { result: 1 } }
])

结果说明

  • 输出结果直接符合要求的attribute1 - int、attribute2 - string格式,若同一字段存在多种数据类型,会用逗号分隔展示所有出现过的类型
  • $type操作符返回的是MongoDB标准BSON类型名,和你需要的int、string、bool等命名完全一致

注意事项

如果集合包含嵌套对象类型的字段,需要额外添加递归拆分子文档的逻辑,上述脚本默认仅统计第一层字段的类型

  • 数据量超过100万的大集合建议先添加{ $limit: 10000 }作为聚合第一阶段做抽样推导,避免全表扫描占用过多资源
  • 如果需要仅统计每个字段出现频率最高的类型,可将$addToSet替换为$first或自定义统计逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:36:03