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

如何不手动指定字段名,从MongoDB返回的JSON对象中提取全部字段值

实现方案

你不需要手动指定字段名,直接使用JavaScript原生的对象处理方法就可以提取所有字段值,另外现有代码里cursor.next()返回的本身就是标准JS对象,不需要额外做JSON序列化再反序列化的冗余操作。

完整修改后的代码

async function fetchDatafromDB (client, IDs)
{
  let mapData = new Map();
  for (let i = 0; i < IDs.length; i++) {
    console.log('当前处理的ID为:' + IDs[i]);

    const cursor = client.db('snapp_transactions').collection('price_check_validation').find({
      Scenario: {
        $in: [IDs[i]]
      }
    });

    while (await cursor.hasNext()) {
      let ts = Date.now();
      // 直接获取查询返回的对象,无需序列化反序列化
      const doc = await cursor.next();
      console.log('查询到的完整文档:', doc);

      // 方案1:直接获取所有字段值组成的数组
      const allValues = Object.values(doc);
      console.log('所有字段值:', allValues);

      // 方案2:遍历所有键值对,可做逐个处理
      Object.entries(doc).forEach(([fieldName, fieldValue]) => {
        console.log(`字段名:${fieldName},字段值:${fieldValue}`);
        // 可按需将值存入之前定义的mapData
        mapData.set(fieldName, fieldValue);
      });

      // 原有取指定字段的逻辑可保留,不受影响
      console.log(doc['Execution Environment']);
    }
  }
  // 可按需返回处理完成的数据集
  return mapData;
}

核心方法说明

  • Object.values(对象):直接返回对象所有可枚举属性的值组成的数组,顺序和for...in循环遍历的顺序一致,无需知道任何字段名就能拿到全部值
  • Object.entries(对象):返回由[键名, 键值]子数组组成的数组,适合需要同时处理字段名和字段值的场景
  • Object.keys(对象):返回所有字段名组成的数组,也可以遍历这个数组再逐个从对象中取值

内容的提问来源于stack exchange,提问作者johan jk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:45:01