【发布时间】:2020-04-09 22:06:27
【问题描述】:
我有 mongodb,它从防火墙接收数据,这个防火墙根据它所拥有的日志向 mongo 发送不同的数据,所以我的 mongo 集合有不同的记录 例如它有这样的记录
{ "_id" : ObjectId("5df2194d2d81db5e845586d7"), "sys" : "2019-11-28", "time" : ISODate("2019-11-28T16:18:15.238Z"), "time_rcvd" :ISODate(“2019-11-28T16:18:15.238Z”),“msg”:“”,“syslog_fac”:23,“syslog_sever”:6,“syslog_tag”:“16:”,“procid”:“ 16”、“pid”:“-”、“level”:“INFO”、“logtype”:“流量日志”、“time2”:“2019 年 11 月 28 日星期四 16:18:15 +0000”、“18: 14KayseriNetcom%%01SECLOG/6/SESSION_TEARDOWN(l):IPVer”:“4”,“协议”:“udp”,“SourceIP”:“10.5.5.30”,“国家”:“10.10.0.144”,“DestinationIP” :“10.10.0.144”,“SourcePort”:“56215”,“DestinationPort”:“162”,“BeginTime”:“1574957770”,“EndTime”:“1574957770”,“SendPkts”:“1”,“SendBytes” :“142”,“RcvPkts”:“0”,“RcvBytes”:“0”,“SourceVpnID”:“0”,“DestinationVpnID”:“0”,“SourceZone”:“隧道”,“DestinationZone”:“信任”,“PolicyName”:“tunnel_to_trust”,“CloseReason”:“老化”,“ApplicationName”:“SNMP。” }
还有这样的记录
{ "_id" : ObjectId("5df2194d2d81db5e845586d1"), "sys" : "2019-11-28", "time" : ISODate("2019-11-28T16:18:13.126Z"), "time_rcvd" :ISODate(“2019-11-28T16:18:13.126Z”),“msg”:“”,“syslog_fac”:23,“syslog_sever”:6,“syslog_tag”:“16:”,“procid”:“ 16”、“pid”:“-”、“level”:“INFO”、“logtype”:“URL LOGS”、“time2”:“2019 年 11 月 28 日星期四 16:18:13 +0000”、“18: 12KayseriNetcom%%01SECLOG/6/SESSION_TEARDOWN(l):IPVer":"4","协议":"icmp","国家":"10.10.0.26","DestinationIP":"10.10.0.26","SourcePort" :“8”,“DestinationPort”:“0”,“BeginTime”:“1574957867”,“EndTime”:“1574957867”,“SendPkts”:“1”,“SendBytes”:“60”,“RcvPkts”:“ 0”、“RcvBytes”:“0”、“SourceVpnID”:“0”、“DestinationVpnID”:“0”、“SourceZone”:“隧道”、“DestinationZone”:“信任”、“PolicyName”:“tunnel_to_trust” , "CloseReason" : "老化。" }
所以第一条记录有 ApplicationName 列,但第二条记录没有该列,所以当我尝试通过此代码使用 Laravel 选择 ApplicationName 时
$datas = Logss::select('ApplicationName')->offset(1)->limit( 10)->get()->toArray();
我收到此错误,因为第二行中没有 ApplicationName
未定义索引:应用程序名称
那么我该如何解决这个问题
【问题讨论】: