2015-10-26 5 views
5

Ich bin gerade dabei herauszufinden, eine Möglichkeit, das nächste Datum eines Eintrags in MongoDB zu finden auf der Suche nach.Finden Sie das nächstgelegene Datum in einer Abfrage

Momentan löste ich das Problem mit 2 Abfragen. Man benutzt $ gte und limit (1), um nach dem nächstgrößeren Datum und dann nach $ lte - limit (1) zu suchen, um zu sehen, ob ein näherer Wert niedriger ist.

Ich frage mich, ob es eine Möglichkeit gibt, das nächste Datum in nur einer Abfrage zu finden, aber konnte nichts zu diesem Thema finden.

Hoffe, Sie können mir dabei helfen, oder zumindest sagen Sie mir sicher, dass dies der einzige Weg ist, dies zu tun.

db.collection.find({"time":{$gte: isoDate}}).sort({"time":1}).limit(1) 
db.collection.find({"time":{$lte: isoDate}}).sort({"time":-1}).limit(1) 

Aber ich bin auf der Suche nach einer Möglichkeit, diese in einer Abfrage zu tun, so dass ich die Ergebnisse subtrahieren müssen nicht auf die nächste zu finden.

+0

Können Sie Ihre Frage bearbeiten, um einige Beispieldaten zu umfassen, erwartete Ausgabe und die Abfrage, die Sie versucht haben? – chridam

Antwort

4

Prüfung dieses

db.collection.find({"time":{$gte: isoDate,$lt: isoDate}}).sort({"time":1}).limit(1) 

Bitte benutzen Sie das gleiche Format wie Unterstützung MongoDB wie followiong

ISODate("2015-10-26T00:00:00.000Z") 
Verwandte Themen