時(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官方文檔。