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

MongoDB查询结果无法在JavaScript控制台打印问题求助

问题排查与修复

核心问题拆解

  1. toArray()返回值处理错误:find().toArray()返回的是文档数组,不是单个文档。你直接访问dataset.firstName,相当于在数组对象上查找firstName属性,必然返回undefined。
  2. 条件判断运算符误用:dataset&dataset.firstName使用了位运算&,应该替换为逻辑与&&,否则判断逻辑会失效。
  3. 循环边界不合理:硬编码i<50可能超出实际数据长度,应该基于返回的firstName数组真实长度循环。

修复后的代码

let dataset = await collection.find(
  { "users.0.firstName": "Terry" },
  {
    _id: 0,
    firstName: {
      $map: {
        input: "$users",
        in: "$$this.firstName"
      }
    }
  }
).toArray();

// 遍历返回的文档数组
for (const doc of dataset) {
  // 安全检查当前文档是否存在firstName数组
  if (doc?.firstName) {
    // 遍历输出每个firstName元素
    doc.firstName.forEach(name => console.log(name));
  }
}

简化优化方案(单文档场景)

如果确定查询只会返回单个文档,可以用findOne()替代find().toArray(),直接获取单个对象,无需遍历数组:

let doc = await collection.findOne(
  { "users.0.firstName": "Terry" },
  {
    _id: 0,
    firstName: {
      $map: {
        input: "$users",
        in: "$$this.firstName"
      }
    }
  }
);

if (doc?.firstName) {
  doc.firstName.forEach(name => console.log(name));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 20:12:42