gpt4 book ai didi

php - 在 PHP 中使用 _id 查询 Mongo 日期范围

转载 作者:IT老高 更新时间:2023-10-28 13:32:26 26 4
gpt4 key购买 nike

对 mongo 比较陌生,我在 mongo 手册中阅读了有关优化对象 ID 的内容。

http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Extractinsertiontimesfromidratherthanhavingaseparatetimestampfield .

根据关于不创建单独的 Created_On 字段的建议,我决定稍后从 _id 字段中提取日期,该字段是一个 ObjectID

现在,我有很多记录都没有 Created_On 字段。

我正在尝试查询日期范围,但不确定语法:

$start = new MongoDate(strtotime("2012-03-01 00:00:00"));
$end = new MongoDate(strtotime("2012-03-15 00:00:00"));

$collection->find(array('_id' => array('$gt' => $start, '$lte' => $end)));

总是返回 0 个结果。虽然我可以查询单个记录并从对象中提取日期。

最佳答案

在 PHP 中,您需要执行以下操作:

function timeToId($ts) {
// turn it into hex
$hexTs = dechex($ts);
// pad it out to 8 chars
$hexTs = str_pad($hexTs, 8, "0", STR_PAD_LEFT);
// make an _id from it
return new MongoId($hexTs."0000000000000000");
}

$start = strtotime("2012-03-01 00:00:00");
$end = strtotime("2012-03-15 00:00:00");

$collection->find(array('_id' => array('$gt' => timeToId($start), '$lte' => timeToId($end))));

然后你可以用它来查询_id字段。

我在这里写了一篇描述该过程的博客文章:http://www.snailinaturtleneck.com/blog/2011/12/20/querying-for-timestamps-using-objectids/

关于php - 在 PHP 中使用 _id 查询 Mongo 日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com