Mongo 中的aggregate 查詢——時(shí)間差問(wèn)題

時(shí)間很寶貴。

一個(gè)需求是存儲(chǔ)一個(gè)時(shí)間戳,前端展示距離當(dāng)前時(shí)間的天數(shù)。需要在后端完成,前端只負(fù)責(zé)展示。

同上一篇文章,Mongo 中的aggregate 查詢——時(shí)間問(wèn)題,在完成版本升級(jí)后,可用以下語(yǔ)句:

Aggregation.project("id", "isbn", "title", "outDate", "inDate", "status")
                            .andExpression("{$floor:{$divide:{{$subtract:{'$inDate',new java.util.Date()}},86400000}}}").as("time")

寫到這忽然覺(jué)得 andExpression的句法和Excel中的函數(shù)有點(diǎn)像,函數(shù)名接括號(hào)里的參數(shù)。
其中$subtract{時(shí)間一,時(shí)間二}是求兩個(gè)時(shí)間戳之間的差,new java.util.Date() 是執(zhí)行到這里時(shí)取系統(tǒng)當(dāng)前時(shí)間。這句嘗試了特別多次,才最終發(fā)現(xiàn)這樣時(shí)對(duì)的。在mongo中查詢時(shí)new Date()可以直接起作用,在java里一定得帶上包名。

其次,$divide是計(jì)算除法,將上一步中求差的結(jié)果,和86400000做除法,得到天數(shù)。86400000=24乘以60乘以60乘以1000(此處發(fā)現(xiàn)星號(hào)不顯示。。)。

最后,$floor將除法的結(jié)果向下取整了。這個(gè)可以按需求四舍五入、向上取整都可以。

參考Mongodb官方文檔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容