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

Node.js中如何基于索引获取/合并MongoDB对象数组中的值

实现MongoDB数据的指定格式输出

需求说明

从MongoDB获取集合数据后,需要将每个lead与其对应的members关联,输出如下格式内容:

  • Index 0: Josh, Person A 50, Person B 100
  • Index 1: Carl, Person A 25, Person B 50, Person C 75

原始数据结构

MongoDB返回的集合数据结构如下:

[
  {
    "_id": "0001",
    "lead": "Josh",
    "members": [
      { "name": "Person A", "points": 50 },
      { "name": "Person B", "points": 100 }
    ]
  },
  {
    "_id": "0002",
    "lead": "Carl",
    "members": [
      { "name": "Person A", "points": 25 },
      { "name": "Person B", "points": 50 },
      { "name": "Person C", "points": 75 }
    ]
  }
]

错误分析

你之前尝试的双层循环错误地覆盖了group[i],将每个成员拆分为单独对象,导致索引对应关系混乱。正确思路是不修改原数组,直接生成目标格式的字符串。

解决方案代码

方式一:分步拼接字符串

let group = [];
// 注意是forEach(大写E),将MongoDB结果存入数组
mongodb.query.forEach((result) => group.push(result));

// 生成目标格式的输出列表
const output = group.map((item, index) => {
  // 初始化行内容,包含索引和lead
  let lineContent = `Index ${index}: ${item.lead}`;
  // 遍历当前项的members,拼接每个成员的信息
  item.members.forEach(member => {
    lineContent += `, ${member.name} ${member.points}`;
  });
  // 加上列表前缀-
  return `- ${lineContent}`;
});

// 打印所有结果
console.log(output.join('\n'));

方式二:用map简化成员拼接

let group = [];
mongodb.query.forEach((result) => group.push(result));

// 更简洁的写法,用map处理成员数组后直接拼接
const output = group.map((item, index) => {
  const membersInfo = item.members.map(member => `${member.name} ${member.points}`).join(', ');
  return `- Index ${index}: ${item.lead}, ${membersInfo}`;
});

console.log(output.join('\n'));

输出结果

运行上述代码后,会输出符合要求的内容:

- Index 0: Josh, Person A 50, Person B 100
- Index 1: Carl, Person A 25, Person B 50, Person C 75

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:43:13