[英]How to convert _bsontype objectID value to string/objectID to insert in mongoDB using node.js
我有一个包含如下对象的 JSON 文件。
{
userID: {"_bsontype":"ObjectID","id":{"0":92,"1":237,"2":216,"3":42,"4":254,"5":178,"6":68,"7":182,"8":208,"9":254,"10":51,"11":64}},
userName: "abc"
}
注意:还有一些嵌套字段,如用户 ID。
尝试使用批量插入导入到 MongoDB 时出现错误
UnhandledPromiseRejectionWarning: Error: object [{"_bsontype":"ObjectID","id":{"0":92,"1":237,"2":216,"3":42,"4":254,"5":178,"6":68,"7":182,"8":208,"9":254,"10":51,"11":64}}] is not a valid ObjectId
如何将用户 ID 转换为对象 ID/字符串? 像ObjectId("5d1de1bab90f8bf15f58df3f")
或"5d1de1bab90f8bf15f58df3f"
数据库中的预期输出:
{
userID: ObjectId("5d1de1bab90f8bf15f58df3f"),
userName: "abc"
}
或者
{
userID: "5d1de1bab90f8bf15f58df3f",
userName: "abc"
}
谢谢你,
你让我走上了正轨。 只是为了它。 这是我的效用函数。 冗长,但它的工作原理。
const { ObjectID } = require( 'mongodb' ) toObjectID: function ( object ) { let hexString = '' Object.values(object.id).forEach(elem =>{ const result = elem.toString(16) if(result.length === 2) { hexString += result } else { hexString += "0" + result } }) const id = new ObjectID(hexString) return id }
我在 ObjectID 插入方面遇到了类似的情况,但我能够解决。 这些步骤——尽管对于这种情况似乎是迂回的——将实现目标:
1 . 将 id 从 base10 整数数组转换为 base16 字符字符串:
const idString = obj.userID.id.map(num => {
var result = num.toString(16);
return result.length == 2 ? num : "0" + num;
})
.join('');
2 . 从字符串创建对象 ID:
const _id = ObjectID(idString);
3 . 转换回字符串 从 ObjectID 转换回 mongodb 在插入或更新文档时期望的 ObjectID() 形式:
_id.toString();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.