如何使用Java从MongoDB读取无模式文档

如何使用Java从MongoDB读取无模式文档,java,mongodb,nosql,Java,Mongodb,Nosql,MongoDB提供了编写任意结构文档的能力,即可以编写任意数量和类型的键/值对。假设我使用了这个特性,即我的文档确实没有模式,那么我如何管理读取,基本上应用程序代码(我使用Java)如何管理数据库中的读取。Java驱动程序以s的形式读取和写入文档,实现并用作映射。然后,应用程序代码负责读取此映射并将值转换为适当的类型 像or这样的映射框架可以帮助您将BSONObject转换为类,反之亦然 如果您想自己执行此操作,可以使用Factory方法,该方法接受BasicBonObject,检查它具有哪些键

MongoDB提供了编写任意结构文档的能力,即可以编写任意数量和类型的键/值对。假设我使用了这个特性,即我的文档确实没有模式,那么我如何管理读取,基本上应用程序代码(我使用Java)如何管理数据库中的读取。

Java驱动程序以s的形式读取和写入文档,实现并用作
映射。然后,应用程序代码负责读取此映射并将值转换为适当的类型

像or这样的映射框架可以帮助您将BSONObject转换为类,反之亦然


如果您想自己执行此操作,可以使用Factory方法,该方法接受BasicBonObject,检查它具有哪些键和值,使用此信息创建相应类的对象并返回它。

您想知道如何使用java客户端连接到mongodb吗?绝对不是。我试图读取具有不同结构的文档,而不是硬编码不同的依赖于结构的读取。我正在寻找一些更有效的方法。并非所有NoSQL数据库都是无模式和/或面向文档的。我编辑了你的问题,并将“NoSQL”替换为“MongoDB”,因为这似乎是你的意思。没错,但我真正的问题是处理6-8个模型(如果使用像morhpia这样的ODM)。因为在一般情况下,由于每个文档都不同,它们必须映射到正确的模型(.class)。我的疑问是如何在运行时做出决定?它应该是一个开关/if-else-if构造,这通常不是最好的编码方式,还是有一个智能的替代方案?我面临的真正挑战是在应用程序代码中,我应该如何将其模块化以获得更好的编码?您可以编辑您的问题并给出文档将如何变化的示例吗?@hershey92我想支持Joe Minichino的请求。当您需要更具体的建议时,请给我们一个更具体的例子。