2014-10-20 48 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驱动程序。

“架构中最可靠的组件是不存在的组件”