2017-10-06 5 views
0

私は自分の文書に日付があります。 7日以上経過していないすべての文書を照会するにはどうすればよいですか。リクエスタマシンとデータベースの時刻が同期しているとは思えません。日付で検索または集計する

+0

ヒント24時間制の場合は、日数を求めてください。 'Instant.now()。マイナス(Duration.ofDays(7))' –

+0

上記は単なる例でした。私が本当に欲しいのは、DB側の日付計算を行うことです。 –

+0

タイムゾーンがそれに含まれないように、あなたの時間はすべてUTCでなければなりません。 – JohnnyHK

答えて

0

あなたは "serverStatus" コマンドを使用して、サーバーの日時を取得することができます:あなたは、一般的な7の期間が必要な場合:モンゴシェルで

:Javaでは

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

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

しかし、これは2つの部分で行うことを意味します。最初に時間を得てから、findで送信します。これは同期がとれていない可能性があります。 1つのクエリの一部として実行する方法。 –