我有一个字符串被转换为MongoDate
$dateAdded = new MongoDate(strtotime("$time"));
echo "date ".$dateAdded;所以我的$dateAdded现在看起来像0.00000000 1482505458。(这里1482505458是秒数,0.00000000是微秒。)
现在,我的集合中有一个文档,其中sec = 1482442458,usec = 622000。
Array ( [_id] => Array ( [addedtime] => MongoDate Object ( [sec] => 1482505458 [usec] => 622000 ) )如何编写只与秒字段匹配的查询?
更新:
她就是我一直在尝试的:
$date = "2016-12-23 15:04:18";
$m = new MongoClient("mongodb://172.29.0.186:27017");
$dateAdded = new MongoDate(strtotime("+330 minutes",strtotime("$time")));
echo " date ".$dateAdded;
$key = array('$and' => array(array('_id.createdby' => "$user"), array('_id.addedtime' => "$dateAdded")));
$collectionCount->find($key);它应该符合:
Array ( [_id.createdby] => 10006161 ) Array ( [_id] => Array ( [addedtime] => MongoDate Object ( [sec] => 1482505458 [usec] => 622000 ) [empname] => Praveen Valecha [createdby] => 10006161 ) )发布于 2016-12-29 11:44:23
这不是一个完美的解决方案,但它对我是有效的,应该适用于大多数想要避免像微秒一样精确地搜索时间的人。
下面是我从问题中提出的代码中修改的部分:
我创建了一个变量,它的时间比我正在寻找的时间长一分钟。
$dateAdded = new MongoDate(strtotime("+330 minutes",strtotime("$time")));
echo " dateAdded ".$dateAdded;
$dateFinal = new MongoDate(strtotime("+331 minutes",strtotime("$time")));
echo " dateFinal ".$dateFinal;然后,我使用$gte和$lt查询@Sammaye建议的日期范围内的文档。
$key = array('_id.addedtime' => array('$gte' => $dateAdded, '$lt' => $dateFinal));注意:,您也可以将+1 second添加到$dateFinal中,而不是增加一分钟以获得更精确的结果。
https://stackoverflow.com/questions/41375557
复制相似问题