使用 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))))
我正在尝试使用 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))))