首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP仅从MongoDate查询"sec“字段

使用PHP仅从MongoDate查询"sec“字段
EN

Stack Overflow用户
提问于 2016-12-29 08:08:36
回答 1查看 586关注 0票数 2

我有一个字符串被转换为MongoDate

代码语言:javascript
复制
$dateAdded = new MongoDate(strtotime("$time"));
echo "date ".$dateAdded;

所以我的$dateAdded现在看起来像0.00000000 1482505458。(这里1482505458是秒数,0.00000000是微秒。)

现在,我的集合中有一个文档,其中sec = 1482442458,usec = 622000。

代码语言:javascript
复制
 Array ( [_id] => Array ( [addedtime] => MongoDate Object ( [sec] => 1482505458 [usec] => 622000 ) )

如何编写只与秒字段匹配的查询?

更新:

她就是我一直在尝试的:

代码语言:javascript
复制
$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);

它应该符合:

代码语言:javascript
复制
 Array ( [_id.createdby] => 10006161 ) Array ( [_id] => Array ( [addedtime] => MongoDate Object ( [sec] => 1482505458 [usec] => 622000 ) [empname] => Praveen Valecha [createdby] => 10006161 ) )
EN

回答 1

Stack Overflow用户

发布于 2016-12-29 11:44:23

这不是一个完美的解决方案,但它对我是有效的,应该适用于大多数想要避免像微秒一样精确地搜索时间的人。

下面是我从问题中提出的代码中修改的部分:

我创建了一个变量,它的时间比我正在寻找的时间长一分钟。

代码语言:javascript
复制
$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建议的日期范围内的文档。

代码语言:javascript
复制
$key = array('_id.addedtime' =>  array('$gte' => $dateAdded, '$lt' => $dateFinal));

注意:,您也可以将+1 second添加到$dateFinal中,而不是增加一分钟以获得更精确的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41375557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档