使用 MongoDB 儲存時間戳(Timestamp)


  • 註冊用戶

    通常大家都會說不必做這件事,因為每一筆資料被建立後,自動產生的 ObjectId 就包含了建立的時間訊息,只要去學習如何從中去解析時間即可。但是,不單只是建立時間,有時我們會為資料加上各種不同的時間戳,如:更新時間等,所以,儲存時間戳還是必要的。

    雖然網路上相關 NodeJS 範例並不多,但 MongoDB 確實有 Timestamp 的資料結構可以用,可以這樣使用:

    var uuid = require('node-uuid');
    var mongodb = require('mongodb');
    var mongodbServer = new mongodb.Server('localhost', 27017, { auto_reconnect: true, poolSize: 10 });
    var db = new mongodb.Db('mydb', mongodbServer);
    /* open db */
    db.open(function() {
        /* Select 'contact' collection */
        db.collection('contact', function(err, collection) {
            /* Generate Timestamp and convert for mongodb */
            var ts = new Date().getTime();
            var i = ts % 1000;
            var t = new mongodb.BSONPure.Timestamp(i, Math.floor(ts * 0.001));
            /* Insert a data with uuid */
            collection.insert({
                name: 'Fred Chien',
                email: 'cfsghost@gmail.com',
                created: t
            }, function(err, data) {
                if (data) {
                    console.log('Successfully Insert');
                } else {
                    console.log('Failed to Insert');
                }
            });
        });
    });

    建立資料庫索引(Index)

    過去有接觸過資料庫的人應該都很清楚,索引(Index)是能優化資料查詢速度的重要功能,MongoDB 同樣也有索引的設計。

    可以在 NodeJS 中,這樣為 name 欄位加上索引:

    collection.createIndex({ name: 1 });

  • Lv 1

    Timestamp可以用來作時間的判斷很方便~~


  • 註冊用戶

    db.contact.insert({
        name: 'Fred Chien',
        email: 'cfsghost@gmail.com',
        created: new Timestamp()
    });

    不是這樣可以了嗎 ?


  • Lv 1

    @yea

    我平常都使用 new Date().getTime() // Timestamp


  • 註冊用戶

    @babto

    使用 new Date().getTime() 的話,資料型別會是 Double


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待