【发布时间】:2013-07-31 04:35:06
【问题描述】:
现在我正在做一个公交车跟踪程序,在这个程序中我使用mongodb来存储静态的公交车时刻表,除了时刻表,我还可以接收实时的公交车到达和离开事件,事件流包括到达/出发时间、当前站和下一站。然而,事件流并没有告诉我公交车号,这使得直接跟踪公交车变得很棘手。但是因为我知道巴士应该在什么时间和地点根据时刻表,我可以使用时刻表来诱导公共汽车号并最终跟踪公共汽车。
我的 mongodb 数据库存储公交车的时刻表,架构是 { busNumber:'019191', 时间线:[{'station':'station 1', 'time': '9:20' },{'station':'station 2', 'time': '9:30' }, ...... ] }。
我的实时事件有到达/离开时间、当前站和下一站。
但问题是如何使用 mongodb 和 mongoose 查询数组,我当前的查询是查找该站的时间表,
Schedule.findOne({'timeline.station ': current_station}, function(err, sche) {
然后一直循环寻找巴士恰好在那个时刻和地点
schedule.time.forEach(function(t) {
if (t.time== currenttime && t.station == currentstation) {
thing = t;
}
});
我想肯定有办法只通过查询而不用丑陋的循环,所以我可以查询找到时间和地点等于当前情况的数组元素,而且下一个数组元素的站也等于next_station 实时公交事件
【问题讨论】: