2013-03-29 32 views
0

現在我工作的總線跟蹤程序,在其中我使用MongoDB的存儲靜態公交站牌,除了日程安排,我可以收到實時總線到達和離開事件,事件流包括到達/離開時間,當前站和下一站。然而,事件流並不告訴我公交車的號碼,這使得直接追蹤公交車變得非常棘手。但是,根據時間表我知道公車的時間和地點,我可以使用時間表來誘導公交車號碼,最後跟蹤公交車。如何查詢這個複雜的陣列arrtibue的貓鼬或MongoDB的

我的mongodb數據庫存儲總線的時間表,模式爲 {busNumber:'019191',timeline:[{'station':'station 1','time':'9:20'},{'站':'站2','時間':'9:30'},................]]}。

我的實時事件已經到貨/發車時間,當前站,下一站。

但問題是,我該怎麼辦查詢使用的MongoDB和貓鼬的陣列,我當前的查詢是要找到與該站的時間表,

Schedule.findOne({'timeline.station ': current_station}, function(err, sche) { 

和然後遍歷所有找到時間公交車恰好是在那個時刻,並把

schedule.time.forEach(function(t) { 
    if (t.time== currenttime && t.station == currentstation) { 
    thing = t; 
    } 
}); 

我想一定有辦法只是查詢,沒有醜陋的循環來做到這一點,這樣我就可以查詢到找到數組元素,其時間和地點等於現狀,而且下一個陣元的站也是等LS的next_station實時總線事件

回答

0
Schedule.findOne({ 'timeline.station': current_station, 'timeline.time' : current_time }, function(err, sche) { ....); 

此外,以處理這兩個領先或落後於時代的偏差,查詢和設計圍繞時限。通過使用$ gt,$ gte,$ lt和$ lte,您可以指定您想要查詢的時間範圍(對於Cookie解決方案,請查看使用Mongo的Date類型)。 Query-operators