2015-10-26 9 views
5

Obecnie próbuję znaleźć sposób, aby znaleźć najbliższy termin wpisu w mongoDB do aktualnie szukam.Znajdź najbliższy termin w jednym zapytaniu

Obecnie rozwiązałem problem za pomocą 2 zapytań. Jeden używający $ gte i limitu (1) do szukania następnej większej daty, a następnie $ lte - limit (1), aby sprawdzić, czy jest bliżej tego, co może być niższe.

Zastanawiam się, czy istnieje sposób na znalezienie najbliższej daty w jednym zapytaniu, ale nie udało się znaleźć niczego w tej sprawie.

Mam nadzieję, że możesz mi w tym pomóc, a przynajmniej powiedz mi na pewno, że jest to jedyny sposób, aby to zrobić.

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

Ale szukam sposobu, aby to zrobić w jednym zapytaniu więc nie muszę odjąć wyników, aby znaleźć najbliższy.

+0

można edytować swoje pytanie zawiera kilka przykładowych danych, spodziewane wyjście i zapytania spróbowałeś? – chridam

Odpowiedz

4

sprawdzić ten

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

Proszę używać tego samego formatu co MongoDB wsparcia jak followiong

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