2017-10-06 86 views
0

我在文檔中有一個日期。如何查詢不超過7天的所有文檔。我不能假定請求者機器和數據庫上的時間是同步的。按日期查找或彙總

+0

提示:如果你想的7通用的持續時間24小時的日子,只需要幾天。 'Instant.now()。minus(Duration.ofDays(7))' –

+0

上面只是一個例子。我真正想要的是,在數據庫端進行日期計算 –

+0

所有的時間都應該是UTC,以便時區不會計算在內。 – JohnnyHK

回答

0

您可以使用 「serverStatus」 命令,在服務器日期時間:

在蒙戈外殼:

server_time = db.adminCommand("serverStatus")['localTime'].getTime(); 
db.mycollection.find({ "change_date": { $gt: new Date((server_time) - 7 * 24 * 60 * 60 * 1000) }}) 

在Java:

MongoClient mongoClient = new MongoClient(); 
MongoDatabase database = mongoClient.getDatabase("dbname"); 
Document serverStatus = database.runCommand(new Document("serverStatus", 1)); 
Instant server_time = (Instant) serverStatus.get("localTime"); 
+0

但這意味着做兩部分。首先得到時間,然後發現它,這可能是不同步的。如何做到這一點,作爲一個查詢的一部分。 –