1

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

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

以下是 Mongo shell 中该部分的外观:

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

根据一些测试,在我看来,我可以通过简单地检查>或格式<来简单地按时间戳比较 2 个文档。yyyyMMddHHmmss

请让我知道这个时间戳是否适用于 Mongo。我可以用它查询吗?

4

2 回答 2

2

Mongo 不会将此理解为一个时间戳,而是一个数字。当您使用从年到秒的格式设置日期时,您将能够使用 > 或 < 查询 mongo 以了解它是之前还是之后。

但是,如果您想 mongo 将数据视为日期,则需要使用适当的bson日期格式。通过让 mongo 将其视为日期,您将拥有所有可用的 Mongo 日期操作,例如提取年份、星期几等。阅读更多

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

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

在这里阅读更多。

于 2013-09-20T13:56:00.570 回答
0

@Kevin,我认为你是对的。java.util.DateBSON对象支持

使用 NumberLong 表示时间戳可以进行范围查询,但使用 BSON日期类型,聚合框架中的日期操作成为可能,功能更强大。

于 2013-09-20T15:03:25.013 回答