2017-02-03 2 views
0

Я пытаюсь эквивалент этого запроса с использованием ReactiveMongo с Play Framework & JSON:Запрашивание поле времени с помощью ReactiveMongo и Play JSON

db.getCollection('people').find({'refreshed': {$gt: ISODate('2017-01-01')}}) 

Я попытался это:

def peopleFuture Future[JSONCollection] database.map(_.collection[JSONCollection]("people")) 

И выполнить запрос :

val fromDate = LocalDate.parse("2017-01-01").atStartOfDay() 
val query = Json.obj("$gte" -> fromDate) 
peopleFuture.flatMap(people => listings.people(query).cursor[JsObject]().collect[List]()) 

Это возвращает пустую последовательность.

Согласно documentation, поле данных/время представляется как

JSObject с JsNumber полем $ дате с меткой времени (миллисекундах) в качестве значения

Однако это не похоже, много помогают при запросе.

Я использую ReactiveMongo 0.12.1 с Play Framework 2.5

ответ

1

Вы можете использовать JodaTime следующим образом:

import org.joda.time.DateTime 
val fromDate = DateTime.parse("2017-01-01") 
val query = Json.obj("refreshed"->Json.obj("$gte" -> Json.obj("$date" -> JsNumber(fromDate.getMillis)))) 
Смежные вопросы