首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

MongoDB 使用 $where 進行時間差值查詢:以 epoch 秒數計算離線超時範例

     編輯:DB2 教學

資料結構範例

{
  "_id": ObjectId("5271ab5133f6792263dd8e8e"),
  "address": "131031000947",
  "description": "bind",
  "group_id": ObjectId("505efb8a3b62c5d7bc8c624f"),
  "last_active_time": 1386768863,   // epoch 秒數
  "location": "test",
  "status": "offline",
  "user_id": ObjectId("4ee175ff82bc6273d0d4672f"),
  "validate_code": "123456"
}

需求

找出 當前時間 (epoch) - last_active_time > 300 秒 且 status = "online" 的文件。

查詢寫法

 300)'},
    {status: "online"}
  ]
}).count()

關鍵點

  • $where 允許執行 JavaScript 運算式,this 指向當前文件。
  • 可進行任意算術/邏輯運算,但無法使用索引,全集合掃描,大量資料效能較差。
  • 生產環境建議:將時間差預先計算存入欄位 (如 idle_seconds),配合一般索引查詢;或使用 Aggregation Pipeline $subtract 配合 $match (MongoDB 3.6+ 支援索引)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved