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

Node.js中如何将字符串列表转换为ObjectId列表(Mongoose场景)

Mongoose字符串ID数组转ObjectId数组报错解决

你的问题出在代码里给$in的值多套了一层数组:ids.map(e => mongoose.Types.ObjectId(e))本身已经返回一个ObjectId组成的数组,你却把它放进[]中,导致$in拿到的是二维数组,Mongoose无法将这种结构转换为ObjectId,因此抛出类型错误。

正确写法1:直接使用map的结果

const affectedUsers = await Users.find({
  _id: { $in: ids.map(e => mongoose.Types.ObjectId(e)) }
});

更简洁的写法:利用Mongoose自动转换

Mongoose支持自动将合法的ObjectId格式字符串转换为ObjectId类型,所以你甚至不需要手动调用mongoose.Types.ObjectId,直接传入原字符串数组即可:

const affectedUsers = await Users.find({
  _id: { $in: ids }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:40:09