从 PHP 获取 Mongodb 中两个日期之间的订单详细信息
Posted
技术标签:
【中文标题】从 PHP 获取 Mongodb 中两个日期之间的订单详细信息【英文标题】:Fetch Order details between two dates in Mongodb from PHP 【发布时间】:2017-02-26 03:45:16 【问题描述】:首先,我可以找到一些与此主题相关的问题。但我无法通过。这更像是一个要求我提供代码的解决方案。
我从 Ajax 发送两个带有 javascript 日期的日期。
var sd = new Date("2016-10-15T00:00:00.000Z");
var ed = new Date("2016-10-17T00:00:00.000Z");
$.ajax(
type: "GET",
url: "dashboard/load_revenue_chart",
data: type:"revenue",period:"no of days",start_date: sd.getTime(),end_date: ed.getTime(),
dataType: 'json',
success: function(data)
line_chart(data);
);
控制器:
if (isset($_GET['period']))
$collection = $this->selectCollection(); // public function for setting the collection.
$start = $_GET['start_date'];
$end = $_GET['end_date'];
print_r($_GET['start_date']); // Outputs : 1476489600000
print_r($_GET['end_date']); // Outputs : 1476662400000
$result = $collection->find(array("OrderedOn" => array('$gt' => $start, '$lt' => $end)));
print_r($result);
输出:
MongoCursor 对象 ( )
也尝试过使用 ISOString。无法获得输出。但是当我尝试使用 Mongo Shell 时,我能够得到结果。
我不知道我错过了什么。如果您向我解释如何使用 php 获得结果,将会有很大帮助。
提前致谢。
【问题讨论】:
【参考方案1】:试试这个:
$dateRange = $collection->find(array("timeStamp" => array('$gt' => $start, '$lt' => end)));
where $start is the start date & $end is the end date
【讨论】:
试过了。没有得到任何结果。我必须以哪种格式给出开始日期和结束日期?【参考方案2】:当您使用 php 使用 gine mongo 函数在 mongo DB 数据库中保存日期时。 new \MongoDB\BSON\UTCDateTime() 然后日期格式将保存在数据库中,如下所示:
更新时间:ISODate("2020-06-02T07:09:57.099+0000")
当您想要获取两个日期之间的所有记录时。例如当前日期和 60 天。 使用 php 回溯日期然后 ex 像这样:
$milliseconds = round(microtime(true) * 1000);
$dt1 = date("Y-m-d", strtotime("-60 day"));
$dt2 = date("Y-m-d", strtotime("-1 day"));
$where = [ "updateTime" => array('$gte' => new MongoDB\BSON\UTCDateTime(strtotime("$dt1")* 1000), '$lte' => new MongoDB\BSON\UTCDateTime(strtotime("$dt2")* 1000))];
$fetchAllUser = new MongoDB\Driver\Query($where);
$fetchAllUser = $connection->executeQuery($db.".collname", $fetchAllUser);
【讨论】:
以上是关于从 PHP 获取 Mongodb 中两个日期之间的订单详细信息的主要内容,如果未能解决你的问题,请参考以下文章