【问题标题】:Generating Mongo ObjectId (_id) with custom time?使用自定义时间生成 Mongo ObjectId (_id)?
【发布时间】:2023-03-19 10:54:01
【问题描述】:

我正在将一个文章表从 MySQL 移植到 Mongo DB。我了解 Mongo 生成的 _id 字段以某种方式在其中具有创建时间,并且可以提取或者您可以对其进行查询。正因为如此,我想用它来获得来自 MySQL 的 created_time INT 时间戳。在移动我的数据以生成 Mongo 的 _id 时,有没有办法在单独的字段中包含我目前为我的记录所拥有的时间戳?

【问题讨论】:

标签: mongodb objectid


【解决方案1】:

是的,这是可能的。例如,在 C# 驱动程序中,有一个 ObjectId 的构造函数,您可以在其中传递时间戳,请参阅 this source file。使用辅助方法GenerateNewId最简单:

var id = ObjectId.GenerateNewId(new DateTime(2012, 01, 01));

我不知道您使用的是哪种编程语言以及该语言的驱动程序是否支持此功能,但我想这已广泛使用。

编辑:This question 包含 Java、mongoose 和 python 的代码,答案包含 PHP 的代码。 “广泛可用”似乎是一个错误的假设,例如,它还没有在 PHP 驱动程序中实现。

【讨论】:

  • 哈,我实际上在使用 PHP。对它的限制并不感到惊讶,但我认为这并不重要。有没有办法使用新的 DateTime() 对象通过向 Mongo 发送原始查询而不是使用驱动程序来生成 MongoId 或 PHP 用户的替代方法?
  • 引用的源文件已移动。截至今天,它位于:github.com/mongodb/mongo-csharp-driver/blob/master/src/…
猜你喜欢
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 2015-09-12
  • 1970-01-01
相关资源
最近更新 更多