查询Mongo中的日期

时间:2013-09-20 01:17:03

标签: mongodb scala casbah

我正在插入带有以下时间戳的Mongo文档:

val format = new java.text.SimpleDateFormat("yyyyMMddHHmmss")
format.format(new Date()).toLong

以下是Mongo的shell中的部分:

"{Timestamp" : NumberLong("20130919161948")}"

根据一些测试,在我看来,我只需按时间戳比较2个文档,只需检查>< yyyyMMddHHmmss格式。

请告诉我这个时间戳是否适合Mongo。我可以用它查询吗?

2 个答案:

答案 0 :(得分:2)

Mongo不会将此理解为时间戳,而是作为一个数字。当您使用从年到秒的格式设置日期时,您将能够使用&gt;查询mongo。或者&lt;知道它是在之前还是之后。

但是,如果您想将mongo视为日期,则需要使用相应的bson日期格式。通过让mongo将其视为日期,您可以使用所有Mongo日期操作,例如提取年份,星期几等。read more

如果您使用的是casbah和Joda,则可以通过显式调用启用序列化和反序列化:

import com.mongodb.casbah.conversions.scala._
RegisterJodaTimeConversionHelpers()

了解更多here

答案 1 :(得分:0)

@Kevin,我认为你是对的。 BSON对象中java.util.Datesupported

使用NumberLong表示时间戳允许您进行范围查询,但使用BSON date type,聚合框架中的date operation变得可能,这更加强大。