【问题标题】:how to query this complex array arrtibue in the mongoose or mongodb如何在 mongoose 或 mongodb 中查询这个复杂的数组 arrtibue
【发布时间】: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 实时公交事件

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:
    Schedule.findOne({ 'timeline.station': current_station, 'timeline.time' : current_time }, function(err, sche) { .... );
    

    此外,为了处理前后时间的偏差,请围绕时间框架进行查询和设计。通过使用 $gt、$gte、$lt 和 $lte,您可以指定要查询的时间范围(对于千篇一律的解决方案,请考虑使用 Mongo 的 Date 类型)。 Query-operators

    【讨论】:

      猜你喜欢
      • 2016-04-20
      • 1970-01-01
      • 2023-04-11
      • 2017-05-22
      • 2018-07-03
      • 2011-01-17
      • 2012-04-11
      • 2014-05-13
      • 1970-01-01
      相关资源
      最近更新 更多