Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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 oplog的时间戳立即重新呈现(当前时间)_Node.js_Mongodb_Bson_Mongodb Oplog - Fatal编程技术网

Node.js 获取查询mongodb oplog的时间戳立即重新呈现(当前时间)

Node.js 获取查询mongodb oplog的时间戳立即重新呈现(当前时间),node.js,mongodb,bson,mongodb-oplog,Node.js,Mongodb,Bson,Mongodb Oplog,oplog有一个名为ts的字段,如下所示: {"ts":"6533707677506207745","t":2,"h":"-7325657776689654694", ...} 我想查询oplog,如下所示: db.oplog.rs.find({ts:{$gt:x}}); query.ts = {$gt: t}; const q = coll.find(query); 如何生成表示现在的时间戳?30秒前怎么样 如果我这样做: const x = new Timestamp(); 我得到一

oplog有一个名为ts的字段,如下所示:

{"ts":"6533707677506207745","t":2,"h":"-7325657776689654694", ...}
我想查询oplog,如下所示:

db.oplog.rs.find({ts:{$gt:x}});
query.ts = {$gt: t};
const q = coll.find(query);
如何生成表示现在的时间戳?30秒前怎么样

如果我这样做:

const x = new Timestamp();
我得到一个错误,说:

生成时间戳的正确方法是什么?如何使用正确的ts值查询oplog?

以下是时间戳的文档:


但我不知道低数字/高数字是什么意思。

这似乎得出了当前的时间,但坦率地说,我不知道为什么:

import {Timestamp} from 'bson';
const t = new Timestamp(1, Math.ceil(Date.now()/1000));
此值可用于查询数据库中具有时间戳字段的字段,如下所示:

db.oplog.rs.find({ts:{$gt:x}});
query.ts = {$gt: t};
const q = coll.find(query);

时间戳是从UNIX纪元开始的秒,日期()是毫秒。所以

db.oplog.rs.find({ts:{$gt:Timestamp((new Date().getTime()-30000)/1000,0)}})
我们在这里要做的是得到30000毫秒前的当前时间,除以1000得到秒,然后向Timestamp-function添加(需要的)第二个参数

编辑: 当然,如果需要确切的Timestamp()值,可以将(new Date().getTime()-30000)/1000的小数部分作为第二个参数填充

var x=(new Date().getTime()-30000)/1000;
var y=Math.floor(x);
var z=Math.round((x-y)*1000);
db.oplog.rs.find({ts:{$gt:Timestamp(y,z)}})

谢谢,时间戳的第一个和第二个参数是什么?(高位和低位对吗?)…你能再解释一下吗?我不明白,这个问题是类似的:是的,它是时间戳(,),所以实际上,在除以1000之后,你可以把小数部分作为第二个参数。我使用了零,所以之后的每个事件都会被列出。