使用 ReactiveMongo 和 Play 查询时间字段 JSON

Querying time field using ReactiveMongo and Play JSON

我正在尝试使用 ReactiveMongo 和 Play Framework & 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]())

此 returns 一个空序列。

根据 documentation,data/time 字段表示为

JsObject with a $date JsNumber field with the timestamp (milliseconds) as value

然而,这在查询时似乎没有多大帮助。

我正在使用 ReactiveMongo 0.12.1 和 Play Framework 2.5

您可以按如下方式使用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))))