MongoDB时间戳现在

时间:2013-08-07 04:04:06

标签: php mongodb

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

目前我使用的查询类似于:

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

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

如果我的某个用户从某个时间戳开始没有登录,我就可以知道了。

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

timestampNOW - someTimestamp(我在PHP中生成)

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

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

2 个答案:

答案 0 :(得分: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驱动程序,但它应该很简单。

答案 1 :(得分:1)

当前时间戳舍入到整秒:

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

时间戳14天前:

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