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

时间:2017-02-03 15:30:19

标签: mongodb scala reactivemongo play-reactivemongo

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

这将返回一个空序列。

根据documentation,数据/时间字段表示为

  

带有$ date JsNumber字段的JsObject,带有时间戳(毫秒)   作为价值

然而,这在查询时似乎没什么帮助。

我在Play Framework 2.5中使用ReactiveMongo 0.12.1

1 个答案:

答案 0 :(得分: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))))