如何通过MongoDB查询将_id转为字符串类型的id字段返回
在MongoDB查询阶段将_id转换为字符串类型的id字段(原生MongoDB驱动)
直接用聚合管道就能在查询阶段完成转换,不用在JavaScript里额外处理返回对象。修改后的代码如下:
const _id = new ObjectId(id); const [event] = await db.collection('events').aggregate([ { $match: { _id } }, { $addFields: { id: { $toString: '$_id' } } }, { $project: { _id: 0 } } ]).toArray();
代码说明:
- 用
aggregate替代findOne,通过聚合管道实现字段转换逻辑 $match阶段:和原代码逻辑一致,匹配目标_id$addFields阶段:新增id字段,利用$toString操作符把ObjectID类型的_id直接转换为字符串$project阶段:排除原_id字段,避免结果里同时存在原_id和新的id- 最后通过
toArray()拿到结果数组,取第一个元素就是目标文档
注意:$toString操作符要求MongoDB版本4.0及以上,如果你使用的是更早版本,可以用$concat配合$substrBytes实现转换:
{ $addFields: { id: { $concat: [{ $substrBytes: ['$_id', 0, 24] }] } } }
内容的提问来源于stack exchange,提问作者user6750100
相关产品推荐
相关产品推荐

