mongo如何确定如何序列化对象?

时间:2018-02-27 11:04:59

标签: node.js mongodb typescript

我正在使用bignumber.js package

中的BigNumber s

我是Mongo的新手,我很好奇Mongo如何正确地序列化这个对象(或任何其他对象)?

我问,因为我有2个脚本,它们在插入这些对象方面看似相同,但在一个脚本中,BigNumber作为字符串插入到另一个脚本中,它们作为数字插入。

该对象来自any流,我需要将任何对象转换或转换为Altitude

示例代码:

export interface Altitude {
    altitude: BigNumber;
    minAltitude: BigNumber;
    maxAltitude: BigNumber;
}

... 'message' object of type any from stream ...
// this JSON back and forth stuff seems like it should be unnecessary
let jsonString = JSON.stringify(message);
let alt = JSON.parse(jsonString) as Altitude;    

collection.insert(alt, (error: MongoError, result: InsertOneWriteOpResult) => {
    ...
});

BigNumber s插入字符串。

看到作为字符串插入Mongo的值我尝试更多地解决问题,只是为了看看它是否可行:

let alt = JSON.parse(jsonString) as Altitude;
let alt1 = {
    size: alt.altitude as BigNumber,
    minAltitude: alt.minAltitude as BigNumber,
    maxAltitude: alt.minAltitude as BigNumber,
};

collection.insert(alt1, (error: MongoError, result: InsertOneWriteOpResult) => {
    ...
});

但是,值仍然作为字符串插入。在我的另一个剧本中,一切都是数字。

想法?

1 个答案:

答案 0 :(得分:0)

MongoDB使用BSON序列化。实际实施将取决于驱动程序。

参考https://www.mongodb.com/json-and-bson