2017-10-06 62 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

但这意味着做两部分。首先得到时间,然后发现它,这可能是不同步的。如何做到这一点,作为一个查询的一部分。 –