2017-01-21 24 views
6

nodejsを初めて使用し、nodejsを使用してmongodbにミリ秒単位でmongodbの挿入を実装すると、double値として挿入されます。誰もこれをNumberLong値として挿入する方法を教えてください。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 
     } 
    } 
+0

「NumberLong」の値は何ですか?あなたは例を挙げることができますか? –

+0

mongoDb Shellからデータを照会する場合Long値はmongoのNumberLongのように表されます。上記の値はMongoのDB { "_id" のような下に挿入を取得すべきである:実施例について のObjectId( "58832821e8f07b1a235ae273")、 "MYID": "AB223"、 "タイムスタンプ":NumberLong(1484990497160)、 "userData":{.....} } – Kamalanathan

+0

http://stackoverflow.com/a/21870772/2965883 – ares

答えて

8

これは、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 
} 
関連する問題