2014-10-20 41 views
0

我正在使用MongoDB 2.6標準。我已經成功地創建了多個集合,插入數據,查詢數據等。在Mongo shell內部以及使用MongoSkin的NodeJS應用程序中工作良好。到現在爲止還挺好。現在我需要使用第三方工具(D2RQ)來訪問數據。看來,D2RQ使用_schema集合來獲取集合名稱,列名稱,數據類型等。 D2RQ適用於三個集合,因爲這些集合位於MongoDB中的_schema中。第四個集合不在_schema中,似乎是不可見的。但是,第四個集合存在於MongoDB中。該集合有數據。我可以在Mongo shell中查詢集合,並使用Mongoskin從NodeJS中查詢集合。任何想法爲什麼收藏沒有出現在_schema中?這是一個MongoDB的錯誤?未在_schema中列出的MongoDB集合

回答

0

這不是一個MongoDB錯誤。問題的根本原因是D2RQ使用UnityJDBC驅動程序訪問MongoDB。 JDBC連接字符串上有一個參數,指示是否重建_schema。在與MongoDB建立JDBC連接時,D2RQ未正確傳遞該參數,導致在第一次調用後所有調用中的_schema集合都過期。該解決方案有兩個部分:

第一部分是編寫一個小的NodeJS應用程序,該應用程序除了在連接時強制執行_schema重建外,什麼也不做。這解決了我的直接問題。

第二部分是將小型NodeJS應用程序擴展爲全功能導出過程,該過程從MongoDB生成一個RDF文件。這使我可以從解決方案堆棧中刪除D2RQ和UnityJDBC驅動程序。

「架構中最可靠的組件是不存在的組件」