Mongo 中的aggregate 查詢——時間差問題
時間很寶貴。
一個需求是儲存一個時間戳,前端展示距離當前時間的天數。需要在後端完成,前端只負責展示。
同上一篇文章,ofollow,noindex">Mongo 中的aggregate 查詢——時間問題 ,在完成版本升級後,可用以下語句:
Aggregation.project("id", "isbn", "title", "outDate", "inDate", "status") .andExpression("{$floor:{$divide:{{$subtract:{'$inDate',new java.util.Date()}},86400000}}}").as("time")
寫到這忽然覺得 andExpression的句法和Excel中的函式有點像,函式名接括號裡的引數。
其中$subtract{時間一,時間二}是求兩個時間戳之間的差,new java.util.Date() 是執行到這裡時取系統當前時間。這句嘗試了特別多次,才最終發現這樣時對的。在mongo中查詢時new Date()可以直接起作用,在java裡一定得帶上包名。
其次,$divide是計算除法,將上一步中求差的結果,和86400000做除法,得到天數。86400000=24乘以60乘以60乘以1000(此處發現星號不顯示。。)。
最後,$floor將除法的結果向下取整了。這個可以按需求四捨五入、向上取整都可以。
參考Mongodb官方文件 。