1

如何检查 MongoDB 中的当前时间戳?

目前我使用如下查询:

   "last_visit": {
     "$lt": NumberLong(1373779876) 
  }

我存储了那个查询,然后我有一个 cron 作业让它每分钟运行一次。

如果我的一个用户在某个时间戳之后没有登录,我可以知道。

但是生成的 NumberLong 不正确,因为我目前正在通过 PHP 使用 time() - 14days,因此生成的 NumberLong 应该是以下结果:

timestampNOW - someTimestamp(我在 PHP 中生成的)

我当前的解决方案保持过去的绝对日期,而不是相对日期,例如 timeRIGHTNOW - 14 天。

我相信我的查询中需要一个本机 Mongo 命令......

4

2 回答 2

1

我不完全确定您要的是什么,但我认为有两种选择:

a) 您想使用 php构建一个查询,向 mongodb 询问过去两周内未登录的所有用户

<?php
// two weeks ago. note that time() returns number of seconds, not milliseconds
$date = (time() - (14 * 24 * 60 * 60)) * 1000;
// construct query: { "last_visit" : { $lt : $date } }
$query = array( 'last_visit' => array( '$lt' => $date ));
$cursor = $collection->find($query);
// you can now iterate $cursor
?>

b)您想在 javascript中执行 mongodb 查询('native Mongo command')

db.Foo.find({"last_visit" : {$lt : ISODate().getTime()}});

调用ISODate将创建一个ISODate表示当前时间的新对象,getTime并将返回自 UNIX 纪元以来的毫秒数。我不知道如何将该查询传递给 PHP mongodb 驱动程序,但它应该很简单。

于 2013-08-07T07:27:58.530 回答
1

当前时间戳四舍五入到整秒:

Timestamp(new Date().getTime()/1000,0)

14天前的时间戳:

Timestamp((new Date().getTime()-(3600*24*14*1000))/1000,0)

于 2018-03-18T06:27:06.640 回答