我可以在mongodb的NodeJS驱动程序中手动指定BSON类型吗?如果我使用“ $ numberLong”,则会收到错误消息

问题描述

这是在将文档对象插入到集合中之前构图的方式

function newTupple(name,email){
return {
  email:email,name:name,account_status:{
    email_verified:{                  //I want this in Int64
        "$numberLong": `${Date.Now()}`
    },activated:false
  }
}
}

然后我将其插入

const new_doc = newTupple("Ninja","[email protected]")
collection.insertOne(new_doc,(err,result)=>{
if(err){
    //err: returns " key $numberLong must not start with '$' "
}
}

我正在使用npm软件包[email protected]

我在做什么错?还是自定义数据类型不适用于JS?

......................................

更新

......................................

完整错误日志

Error: key $numberLong must not start with '$'
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:915:19)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:941:17)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:941:17)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:727:17)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:941:17)
    at BSON.serialize (--------------\node_modules\bson\lib\bson\bson.js:64:28)

解决方法

您使用的扩展json语法不适用于在应用程序中构造对象图。相反,您应该构造适当类型的对象。

例如,请参见here以获取详细的示例。

const BSON = require('bson');
const Long = BSON.Long;

const doc = { long: Long.fromNumber(100) };