当前位置: 首页 > 知识库问答 >
问题:

从具有唯一增量的时间戳构造Mongo ObjectId

艾子石
2023-03-14

我想为要插入的新文档生成mongo objectid,并覆盖时间戳值。所以我使用下面的代码来获取objectid。

var oIdWithTimestamp = function (timestamp) {
    // Convert string date to Date object (otherwise assume timestamp is a date)
    if (typeof (timestamp) == 'string') {
        timestamp = new Date(timestamp);
    }

    // Convert date object to hex seconds since Unix epoch
    var hexSeconds = Math.floor(timestamp / 1000).toString(16);

    // Create an ObjectId with that hex timestamp
    var constructedObjectId = mongoose.Types.ObjectId(hexSeconds + "0000000000000000");

    return constructedObjectId
};

但是如果我想插入两个具有相同时间戳的文档,它不能满足需要。我注意到有一个get_inc函数用于向对象添加增量值。并且可以使用相同的时间戳生成16777214不同的对象。感谢任何关于如何使用此增量来获得直到16777214的唯一时间戳的帮助。

共有1个答案

全冥夜
2023-03-14

我已经尝试生成随机mongo对象使用下面的片段。

var bson = require('bson');

var generateObjIdFromTime = function(spefictime) {
    spefictime = ~~(spefictime/1000);
    return bson.ObjectID(spefictime);
}  

它生成具有给定时间戳的随机Mongo对象。

 类似资料:
  • 问题内容: 我需要在Java中创建一个时间戳(以毫秒为单位),以确保在特定的VM实例中是唯一的。即需要某种方式来限制System.currentTimeMillis()的吞吐量,以便它每毫秒最多返回一个结果。关于如何实施的任何想法? 问题答案: 这样可以使时间尽可能接近当前时间,而不重复。 避免每毫秒限制一个id的一种方法是使用微秒级的时间戳。例如,将currentTimeMS乘以1000。这将允

  • 我正在探索DataBricks Delta表及其时间旅行/时间特性。我有一些过去发生的事件数据。我正在尝试将它们插入delta表,并能够使用数据中的时间戳而不是实际的插入时间进行时间旅行。 我的事件中有一个日期/时间列。我将其重命名为“时间戳”,但它仍然不起作用。 我的 csv 数据如下所示:(数据显示 id=1000 的单个案例发生了 5 次更新) 我使用这些命令来创建增量表: 我有两个问题:

  • 问题内容: 我有一个带有列“ position”的表“ items”。位置具有唯一且非空的约束。为了在位置x插入新行,我首先尝试增加后续项的位置: 这导致了唯一的约束冲突: 问题似乎出在PostgreSQL执行更新的顺序上。PostgreSQL <9.0中的唯一约束是不可延迟的,不幸的是,当前无法使用9.0。另外,UPDATE语句不支持ORDER BY子句,并且以下命令也不起作用(仍然重复键冲突)

  • 问题内容: 我有一张表: 我需要选择具有最大更新值的id和val。因此,对于此表,结果应为: 问题答案: 这需要在与主表连接的子查询中进行汇总。

  • 我正在尝试将时间戳的时间为05:59:59 AM或以下的所有数据行转换为上一个日期。因此,例如“2018-12-08 05:05:00”将是“2018-12-07”,“2018-11-06 03:02:00”将是“2018-11-05”。 时间戳的格式为“yyyy-mm-dd hh:mm:ss”,并存储为varchar “从AWS Athena客户端引发错误。syntax_error:第1:17行

  • 问题内容: 我如何从詹金斯获得最新版本的构建时间戳记?我想在后期构建操作中将此值插入“电子邮件”主题。 问题答案: 注意: 这在Jenkins 1.597中已更改,请参阅此处以获取有关迁移的更多信息 您应该能够导航到来查看构建期间可用的所有全局环境变量。 替换为用于获取Jenkins网页的URL(例如,可能是)。 环境变量之一是: 如果您使用jenkins可编辑的电子邮件通知,则应该可以在电子邮件