【发布时间】:2020-04-16 01:10:54
【问题描述】:
我有一个 mongo 数据库,里面有这样的数据
{ "_id" : ObjectId("5e0202d3fae94619c020c390"), "sys" : "2019-12-19", "time" : ISODate("2019-12-19T11:28:30.454Z"), "time_rcvd" :ISODate(“2019-12-19T11:28:30.454Z”),“msg”:“”,“syslog_fac”:23,“syslog_sever”:6,“syslog_tag”:“11:”,“procid”:“ 11”、“pid”:“-”、“level”:“INFO”、“logtype”:“交通日志”、“date”:“2019-12-19”、“Module”:“01SECLOG”、“Desc ":"IPVer","Severity_Level":"6","Protocol":"tcp","SourceIP":"10.10.2.101","Country":"172.217.169.194","DestinationIP":"172.217.169.194" ”,“SourcePort”:“39554”,“DestinationPort”:“443”,“SourceNatIP”:“192.168.101.2”,“SourceNatPort”:“4128”,“BeginTime”:“1576754847”,“EndTime”:“1576754894” ","SendPkts":"59","SendBytes":"11041","RcvPkts":"81","RcvBytes":"8095","SourceVpnID":"0","DestinationVpnID":"0", “SourceZone”:“guest”,“DestinationZone”:“untrust”,“PolicyName”:“guest_to_untrust”,“CloseReason”:“tcp-rst”,“ApplicationName”:“Google_Service。”,“VSys”:“”, “用户”:“”,“公关” ofile”:“”,“类型”:“”,“类别”:“”,“子类别”:“”,“页面”:“”,“主机”:“”,“推荐人”:“”,“项目” " : "", "动作" : "" }
我正在应用这个查询来从中获取数据,使用 laravel 聚合
$data = Logss::raw(function($collection)use ($topLength,$start)
{
return $collection->aggregate([
[
'$group' => [
'_id' => '$ApplicationName',
'count' => [
'$sum' => 1
]
]
],
['$sort' => ['count' => -1]],
['$limit'=> $topLength]
]);
});
我可以毫无问题地获取数据,但我决定根据用户选择的日期对这些数据进行过滤 喜欢
{ last_hour , 今天 , 昨天 , this_week , last_week , this_month , last_month , this_year };
例如当用户选择今天时,我将使用碳来获取今天的日期
$today = new Carbon('today');
它是返回
2019-12-25 00:00:00
但我不知道该怎么做,只检索今天的记录,
我使用了这段代码,但没有返回任何内容
$data = Logss::raw(function($collection)use ($topLength)
{
return $collection->aggregate([
[
'$group' => [
'_id' => '$ApplicationName',
'count' => [
'$sum' => 1
]
]
],
['$sort' => ['count' => -1]],
[ '$match' => [ 'time' =>['$gt'=>' ISODate("2017-10-01")' ]]],
['$limit'=> $topLength]
]);
});
【问题讨论】: