2016-12-19 26 views
0

我有這個集合MongoDB中提取文件,如果元件A的時間是相同的文檔

db.Tratte.insert(
    { 
    "TransportID":["9901","9903"], 
    "StopsBy":[ 
    {"Station":"Roma Termini", 
    "StopsAt":ISODate("2016-01-01T09:05:00Z"), 
    "LeavesAt":ISODate("2016-01-01T09:25:00Z")}, 
     {"Station":"Napoli Centrale", 
    "StopsAt":ISODate("2016-01-01T10:37:00Z"), 
    "LeavesAt":ISODate("2016-01-01T10:52:00Z")}, 
    {"Station":"Salerno", 
    "StopsAt":ISODate("2016-01-01T11:35:00Z")}] 
    }) 

db.Tratte.insert(
     { 
     "TransportID":"9999", 
     "StopsBy":[ 
     {"Station":"Salerno", 
     "StopsAt":ISODate("2016-01-01T09:05:00Z"), 
     "LeavesAt":ISODate("2016-01-01T09:25:00Z")}, 
      {"Station":"Napoli Centrale", 
     "StopsAt":ISODate("2016-01-01T10:37:00Z"), 
     "LeavesAt":ISODate("2016-01-01T10:52:00Z")}, 
     {"Station":"Roma Termini", 
     "StopsAt":ISODate("2016-01-01T11:35:00Z")}] 
     }) 

,並在輸入給兩個站不到元素B的時候,我想只有那些文件,其中例如,如果我選擇作爲A站羅馬Termini站和B站Salerno站,系統必須返回上面的第一個文件(因爲時間(Roma)時間(Salerno))

我在想這樣做的唯一方法是提取所有包含兩個站的文件,檢索他們的時間,如果他們符合我的標準返回的做cument。但是這個解決方案太神祕了。有沒有一個單一的查詢來做到這一點?

我的最終目標是: 我需要一種方式來獲得,例如,羅馬 - >薩勒諾文件,但不薩勒諾 - >羅馬文件,當用戶搜索兩個站。問題是我得到了兩個方向,但我只想要正確的一個。 謝謝

回答

0

MongoDb不是爲這種查詢而設計的,可能值得關注關係數據庫來存儲關係數據。

然而,您可以根據給定的用法對文檔重新建模?

+0

是的,我可以重新建模架構 – CiroRa

0

看看the $gt operator,它匹配所有具有大於值的特殊字段的文檔。當您的文件query時使用它。

+0

我的問題是,我無法用一個單一的查詢檢索輸入中給出的站點的文檔以及站點A的時間<站點B的時間的標準。單獨進行查詢可能有用,但我認爲這不是最好的方法 – CiroRa

相關問題