【发布时间】:2014-08-19 11:20:44
【问题描述】:
我使用Play-ReactiveMongo 与 MongoDB 交互...考虑到我的应用程序中没有使用 BSON,我想知道如何比较两个日期。让我给你举个例子:
def isTokenExpired(tokenId: String): Future[Boolean] = {
var query = collection.genericQueryBuilder.query(
Json.obj(
"_id" -> Json.obj("$oid" -> tokenId),
"expirationTime" -> Json.obj("$lte" -> DateTime.now(DateTimeZone.UTC))
)
).options(QueryOpts(skipN = 0))
query.cursor[JsValue].collect[Vector](1).map {
case Some(_) => true
case _ => false
}
}
isTokenExpired 无法按预期工作,因为 expirationTime 被认为是 String - 我有一个隐含的 Writes 将 DateTime 序列化为 "yyyy-MM-ddTHH:mm:ss.SSSZ"... 这是正确的,因为我想要人类可读的 JSON。
也就是说,我如何从具有DateTime 小于另一个DateTime 的集合中获取文档?以下似乎不起作用:
Json.obj(
"_id" -> Json.obj("$oid" -> tokenId),
"expirationTime" -> Json.obj("$lte" -> Json.obj("$date" -> DateTime.now(DateTimeZone.UTC).getMillis))
)
谢谢。
【问题讨论】:
标签: json mongodb scala playframework reactivemongo