0

我正在尝试使用带有 Play Framework 和 JSON 的 ReactiveMongo 来等效于此查询:

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]())

这将返回一个空序列。

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

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

但是,这在查询时似乎没有多大帮助。

我正在使用带有 Play Framework 2.5 的 ReactiveMongo 0.12.1

4

1 回答 1

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))))
于 2017-02-03T16:05:45.293 回答