MongoDB集合未在_schema中列出

时间:2014-10-20 18:45:41

标签: mongodb schema

我使用的是MongoDB 2.6标准。我已经成功创建了多个集合,插入数据,查询数据等。在Mongo shell以及使用MongoSkin的NodeJS应用程序中工作正常。到现在为止还挺好。现在我需要使用第三方工具(D2RQ)来访问数据。似乎D2RQ使用_schema集合来获取集合名称,列名称,数据类型等。 D2RQ适用于三个集合,因为集合在MongoDB中的_schema中。第四个集合不在_schema中,似乎是不可见的。但是,第四个集合存在于MongoDB中。该集合包含数据。我可以使用Mongoskin在Mongo shell和NodeJS中查询集合。知道为什么集合没有出现在_schema中吗?这是一个MongoDB错误吗?

1 个答案:

答案 0 :(得分:0)

这不是MongoDB错误。问题的根本原因是D2RQ使用UnityJDBC驱动程序来访问MongoDB。 JDBC连接字符串上有一个参数,指示是否重建_schema。在与MongoDB建立JDBC连接时,D2RQ未正确传递参数,导致_schema集合在第一次调用后的所有调用中都过时。该解决方案包含两部分:

第一部分是编写一个微小的NodeJS应用程序,它只会在连接时强制_schema重建。这解决了我的直接问题。

第二部分是将微小的NodeJS应用程序扩展为一个全功能的导出过程,从MongoDB生成一个RDF文件。这允许我从解决方案堆栈中删除D2RQ和UnityJDBC驱动程序。

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