繁体   English   中英

如何使用 node.js 将 _bsontype objectID 值转换为 string/objectID 以插入到 mongoDB 中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM