如何将时间戳转换为Mongo ObjectID

20 浏览
0 Comments

如何将时间戳转换为Mongo ObjectID

我知道我们可以使用getTimestamp()方法从ObjectId中获取时间戳,但是否有办法从时间戳生成一个ObjectId呢?

更具体地说,如果我有一个输入的月份年份,然后我想将其转换为Mongo ObjectID以在数据库中查询,我应该如何做到这一点?

0
0 Comments

问题的出现原因:

在MongoDB中,ObjectID是一个12字节的标识符,用于唯一标识文档。而在某些情况下,我们可能需要将时间戳(timestamp)转换为ObjectID来进行相关操作。然而,直接使用PyMongo中的from_datetime方法可能无法在MongoDB shell中运行。

解决方法:

根据vkrishna的回答,可以使用fromDate方法来将时间戳转换为ObjectID。具体代码如下:

dummy_id = ObjectId.fromDate(gen_time)

其中,gen_time是一个datetime对象,通过fromDate方法将其转换为ObjectID。这样我们就可以在MongoDB中使用转换后的ObjectID进行相关操作了。

0
0 Comments

如何将时间戳转换为Mongo ObjectID

有时候我们需要将时间戳转换为Mongo ObjectID,但是直接将时间戳作为参数传递给Mongo ObjectID构造函数并不能得到预期的结果。如果你将一个数字传递给bson的ObjectId构造函数,它会将其作为时间戳并传递给generate方法。

为了解决这个问题,我们可以使用以下方法将一个月和年转换为日期(月份从零开始计算):

timestamp = ~~(new Date(2016, 11, 17) / 1000)
new ObjectId(timestamp)

以上代码将会将日期转换为时间戳,并将该时间戳作为参数传递给ObjectId构造函数,从而得到对应的Mongo ObjectID。

0
0 Comments

在MongoDB中,每个文档都有一个唯一的标识符,称为ObjectID。ObjectID包含了文档的创建时间戳信息。然而,有时候我们需要将一个时间戳转换为ObjectID,以便与其他文档进行比较或查询。

下面是一个示例代码,演示了如何将时间戳转换为ObjectID:

> ObjectId("5a682326bf8380e6e6584ba5").getTimestamp()
ISODate("2018-01-24T06:09:42Z")
> ObjectId.fromDate(ISODate("2018-01-24T06:09:42Z"))
ObjectId("5a6823260000000000000000")

这段代码在Mongo shell中运行,首先我们使用`getTimestamp()`函数将ObjectID转换为对应的时间戳,然后使用`fromDate()`函数将时间戳转换为ObjectID。

然而,有人在使用MongoDB官方文档时发现,官方文档中并没有列出`fromDate()`函数。这引发了他们的疑问,为什么官方文档没有提到这个函数。幸运的是,通过其他方式,我们仍然可以找到并使用`fromDate()`函数。

以上就是如何将时间戳转换为ObjectID的方法。通过这种方法,我们可以在需要比较或查询时间戳的情况下,将其转换为ObjectID,并与其他文档进行比较。感谢这个方法的作者,解决了这个问题。

0