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

JavaScript中如何将数组内ObjectId类型的_id转换为字符串?

解决MongoDB ObjectId转字符串的问题

错误原因

你用slice报错是因为x._id是MongoDB的ObjectId实例对象,不是原生字符串或数组,所以没有slice方法。

正确转换方法

下面几种方法都能把ObjectId转成对应的字符串:

1. 使用ObjectId自带的toString()方法

这是最直接的方式,MongoDB的ObjectId实例内置了toString()方法,会返回不带ObjectId(包裹的纯字符串:

const usersWithStringId = userFromDb.map(user => ({
  ...user,
  _id: user._id.toString()
}));

2. 使用valueOf()方法

valueOf()也会返回ObjectId的字符串值,效果和toString()一致:

const usersWithStringId = userFromDb.map(user => ({
  ...user,
  _id: user._id.valueOf()
}));

3. 用String()强制转换

通过原生String函数强制转换ObjectId实例,同样能得到目标字符串:

const usersWithStringId = userFromDb.map(user => ({
  ...user,
  _id: String(user._id)
}));

4. 解构时直接处理(ES6+)

如果需要提取字段并转换,可以在解构过程中直接处理_id:

const usersWithStringId = userFromDb.map(({ _id, ...rest }) => ({
  ...rest,
  _id: _id.toString()
}));

示例输出

原userFromDb示例:

[
  { _id: ObjectId("60d21b4667d0d8992e610c85"), name: "Alice" },
  { _id: ObjectId("60d21b4667d0d8992e610c86"), name: "Bob" }
]

转换后输出:

[
  { _id: "60d21b4667d0d8992e610c85", name: "Alice" },
  { _id: "60d21b4667d0d8992e610c86", name: "Bob" }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:05:28