Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js mongodb更改流从时间戳恢复_Node.js_Mongodb - Fatal编程技术网

Node.js mongodb更改流从时间戳恢复

Node.js mongodb更改流从时间戳恢复,node.js,mongodb,Node.js,Mongodb,在mongodb文档中 这里有一句话: 如果时间戳是过去的,oplog必须有足够的历史记录来定位与令牌或时间戳关联的操作 因此,似乎可以恢复并获取从某个时间添加到oplog的所有事件 有一个参数,似乎它必须完成我需要的 watch([],{startAtOperationTime: ...}) Param是Timestamp,我不知道如何将特定日期转换为正确的时间戳。是MongoDB 4.0和更新的驱动程序版本中引入的changestreams的新参数。它允许您确保不会丢失任何写入操作,以防

在mongodb文档中 这里有一句话:

如果时间戳是过去的,oplog必须有足够的历史记录来定位与令牌或时间戳关联的操作

因此,似乎可以恢复并获取从某个时间添加到oplog的所有事件

有一个参数,似乎它必须完成我需要的

watch([],{startAtOperationTime: ...})

Param是Timestamp,我不知道如何将特定日期转换为正确的时间戳。

是MongoDB 4.0和更新的驱动程序版本中引入的changestreams的新参数。它允许您确保不会丢失任何写入操作,以防流被中断,并且您无法访问resume令牌

使用
startOperationTime
的一个警告是,您的应用程序需要准备好接受在恢复changestream时可能会看到写入事件两次,因为您是从任意时间点恢复的

在节点中,可以通过构造并将其传递到:

时间戳
对象本身以以下形式创建:

new Timestamp(ordinal, unix_epoch_in_seconds)
有关详细说明,请参见

在节点中,可以使用以下命令获取当前历元(以毫秒为单位):

(new Date).getTime()
请记住,创建
startAtOperationTime
所需的
Timestamp
对象需要将其转换为秒数,这是MongoDB 4.0和更新的驱动程序版本中引入的changestreams的一个新参数。它允许您确保不会丢失任何写入操作,以防流被中断,并且您无法访问resume令牌

使用
startOperationTime
的一个警告是,您的应用程序需要准备好接受在恢复changestream时可能会看到写入事件两次,因为您是从任意时间点恢复的

在节点中,可以通过构造并将其传递到:

时间戳
对象本身以以下形式创建:

new Timestamp(ordinal, unix_epoch_in_seconds)
有关详细说明,请参见

在节点中,可以使用以下命令获取当前历元(以毫秒为单位):

(new Date).getTime()

请记住,创建
startAtOperationTime

所需的
Timestamp
对象时,需要将其转换为秒数,我认为文档中提到的“Timestamp”在这里具有误导性。它不是常规的时间戳,而是oplog特定的时间戳。为了能够恢复变更流,您需要使用提供的恢复令牌(),而不是规范中的?声明StartOperationTime、resumeAfter和startAfter都是互斥的;我知道怎么做了。请看答案。我相信文件中提到的“时间戳”在这里有误导性。它不是常规的时间戳,而是oplog特定的时间戳。为了能够恢复变更流,您需要使用提供的恢复令牌(),而不是规范中的?声明StartOperationTime、resumeAfter和startAfter都是互斥的;我知道怎么做了。请看答案。这实际上对我不起作用,我不了解过去的事件,你检查过了吗?可能是nodejs驱动程序的问题(我尝试了最新版本),mongodb4.0?啊,它在最新的驱动程序3.3-beta版本中工作。谢谢。这实际上对我不起作用,我不知道过去的事情,你查过了吗?可能是nodejs驱动程序的问题(我尝试了最新版本),mongodb4.0?啊,它在最新的驱动程序3.3-beta版本中工作。谢谢