如何从Spring Data MongoDB中的MongoDB ObjectId中提取时间戳?

Eme*_*gia 1 mongodb spring-data

MongoDB 文档建议从ObjectId中提取插入时间,而不是使用单独的时间字段.有谁知道如何使用Spring Data MongoDB执行此操作?

特别是,我想查询在特定日期范围内插入的文档.

pha*_*ckk 6

ObjectId... 获取时间很容易,但是你不会得到ms精度.

org.bson.types.ObjectId您可以使用2种方法:getTimeSecond()getTime()(相同`getTimeSecond() * 1000L).这些将获得你的unix时间戳.

我没有在Spring中使用MongoDB - 但是如果你能够掌握实际的ObjectId实例,就像调用上面的方法之一一样简单.

现在 - 要查询时间范围内的文档,您必须返回并ObjectId根据时间戳创建对象.再次 - 这很简单 - ObjectId有一个构造函数可以为你做这个:

ObjectId(Date time)

因此 - 创建2个ObjectId表示最小和最大时间范围的实例,然后执行以下查询:

db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );

where value1value2代表ObjectId您通过创建的实例ObjectId(Date time)