MongoDB集合未列在\u架构中

MongoDB集合未列在\u架构中,mongodb,schema,Mongodb,Schema,我使用的是MongoDB 2.6标准。我已经成功地创建了多个集合、插入的数据、查询的数据等。在Mongo shell内部以及使用MongoSkin的NodeJS应用程序中都可以正常工作。到目前为止,一切顺利。现在我需要使用第三方工具D2RQ来访问数据。D2RQ似乎使用_模式集合来获取集合名称、列名、数据类型等。D2RQ适用于其中三个集合,因为集合位于MongoDB中的_模式中。第四个集合不在_模式中,似乎不可见。然而,第四个系列出现在MongoDB中。该集合包含数据。我可以在mongoshell

我使用的是MongoDB 2.6标准。我已经成功地创建了多个集合、插入的数据、查询的数据等。在Mongo shell内部以及使用MongoSkin的NodeJS应用程序中都可以正常工作。到目前为止,一切顺利。现在我需要使用第三方工具D2RQ来访问数据。D2RQ似乎使用_模式集合来获取集合名称、列名、数据类型等。D2RQ适用于其中三个集合,因为集合位于MongoDB中的_模式中。第四个集合不在_模式中,似乎不可见。然而,第四个系列出现在MongoDB中。该集合包含数据。我可以在mongoshell中查询集合,也可以使用Mongoskin从NodeJS查询集合。知道为什么集合没有出现在_模式中吗?这是MongoDB bug吗?

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

第一部分是编写一个小型NodeJS应用程序,它除了强制在连接上重建_模式之外,什么也不做。这解决了我眼前的问题

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

体系结构中最可靠的组件是不存在的组件