【问题标题】:How to insert the timestamp in milliseconds as NumberLong in MongoDB using NodeJS如何使用 NodeJS 在 MongoDB 中以毫秒为单位插入时间戳作为 NumberLong
【发布时间】:2017-01-21 09:14:09
【问题描述】:

我是 nodejs 的新手,并尝试使用 nodejs 将当前时间戳的 mongodb 插入实现为毫秒,并将其插入为双精度值。谁能帮我把它作为 NumberLong 值插入。

var data = {
        myId : uniqueId,
        Timestamp : Date.now(),   ---> This one is getting inserted as double.
        userData : applicationData
      }
    }

我也尝试像这样插入,但它以字符串形式插入。

 var mongo=require('mongodb');
 var Long = mongo.Long;

 var data = {
        myId : uniqueId,
        Timestamp : Long.fromString((Date.now() + "")), ---> This one is getting inserted as String.
        userData : applicationData
      }
    }

【问题讨论】:

  • NumberLong 的值是什么?可以举个例子吗?
  • 从 mongoDb Shell 如果查询数据 Long 值将表示为 mongo 中的 NumberLong。例如:上面的值应该像下面一样插入到 Mongo DB { "_id" : ObjectId("58832821e8f07b1a235ae273"), "myId" : "AB223", "Timestamp" : NumberLong(1484990497160), "userData" : {.. ...} }

标签: node.js mongodb


【解决方案1】:

这是因为 JavaScript 数字始终是 64 位浮点数。 你可以使用 Mongo 驱动的 Long (https://mongodb.github.io/node-mongodb-native/api-bson-generated/long.html) 来解决这个问题。

var Long = require('mongodb').Long;
var current_millies = new Date().getTime();

var data = {
 myId : uniqueId,
 timestamp : Long.fromNumber(current_millies),
 userData : applicationData
}

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2020-08-03
    • 2020-02-22
    • 2016-05-14
    • 1970-01-01
    • 2015-06-17
    • 2011-08-02
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多