MongoDB关联关系场景下如何拆分拼接在一起的ObjectId?
问题解决方案
首先明确结论:你可以用slice方法拆分拼接后的ObjectId字符串,无法使用split方法,因为拼接后的字符串没有固定分隔符。
核心依据
MongoDB生成的ObjectId固定为24位十六进制字符串,你可以按照每24位为一个单元对长字符串做切割。
代码实现示例(JavaScript)
// 你拿到的拼接后字符串 const mergedIdStr = '616450eeecf687bc5f59fac261645108ecf687bc5f59fac4616451a8ecf687bc5f59fac8' function splitMergedObjectIds(mergedStr) { const OBJECT_ID_LENGTH = 24 // 先做合法性校验 if (mergedStr.length % OBJECT_ID_LENGTH !== 0) { throw new Error('拼接字符串长度非法,不是24的整数倍') } const idList = [] for (let i = 0; i < mergedStr.length; i += OBJECT_ID_LENGTH) { idList.push(mergedStr.slice(i, i + OBJECT_ID_LENGTH)) } return idList } // 调用后得到独立的ObjectId字符串数组 const result = splitMergedObjectIds(mergedIdStr)
更推荐的根因修复方案
切割属于临时兼容方案,建议优先排查接口返回逻辑:正常对MongoDB的ObjectId数组做JSON序列化时,会返回独立字符串组成的数组,出现拼接字符串说明你的数据返回环节存在错误的序列化逻辑(比如错误调用了数组的toString()方法、或者字段映射逻辑出错),修复这部分逻辑可以从根源解决问题。
内容的提问来源于stack exchange,提问作者Borgs
相关产品推荐
相关产品推荐

