深究從MongoDB的ObjectId中獲取時(shí)間信息
MongoDB默認(rèn)使用_id字段作為主鍵,類(lèi)型為ObjectId。ObjectId的生成有一定的規(guī)則,詳情可以查看這篇文章 - MongoDB深究之ObjectId。如果你在寫(xiě)入數(shù)據(jù)庫(kù)的時(shí)候忘記寫(xiě)入創(chuàng)建時(shí)間,不用擔(dān)心,完全可以通過(guò)_id字段的值來(lái)還原當(dāng)時(shí)的時(shí)間。看下面的mongodb script腳本:
db.getCollection('fees').find({}).forEach(function(item){ var _str = item._id.toString().substr(10, 8); var _date = new Date(Number(parseInt(_str, 16).toString() + '000')); item.createTime = _date; db.fees.save(item); })
forEach可以遍歷collection中的每一條數(shù)據(jù),然后逐一進(jìn)行修改。item._id.toString()會(huì)將整個(gè)ObjectId("...")當(dāng)成一個(gè)字符串來(lái)處理,然后從第10個(gè)字符開(kāi)始,取8個(gè)字符,得到的是這條數(shù)據(jù)創(chuàng)建時(shí)的時(shí)間戳(不帶毫秒位數(shù))。在后面補(bǔ)上毫秒位數(shù)”000“,然后用Date()方法構(gòu)造成時(shí)間對(duì)象,賦值給createTime屬性。
以上所述是小編給大家介紹的深究從MongoDB的ObjectId中獲取時(shí)間信息,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
MongoDB數(shù)據(jù)庫(kù)常用的10條操作命令
MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫(xiě)。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。本文簡(jiǎn)單的介紹一些MongoDB數(shù)據(jù)庫(kù)常用的操作命令2021-06-06SpringBoot+MongoDB實(shí)現(xiàn)物流訂單系統(tǒng)的代碼
這篇文章主要介紹了SpringBoot+MongoDB實(shí)現(xiàn)物流訂單系統(tǒng)的代碼,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09MongoDB如何更新多級(jí)文檔的數(shù)據(jù)
MongoDB 這類(lèi)文檔型數(shù)據(jù)庫(kù)與關(guān)系型數(shù)據(jù)庫(kù)最大的差別就是所有數(shù)據(jù)是按文檔存儲(chǔ)的,因此更新時(shí)會(huì)涉及深層數(shù)據(jù)更新,例如更如何新某個(gè)對(duì)象的下級(jí)對(duì)象屬性。本篇介紹如何更新多級(jí)文檔的數(shù)據(jù)。2021-06-06