【问题标题】:How to read schema-less documents using Java from MongoDB如何使用 Java 从 MongoDB 读取无模式文档
【发布时间】:2017-07-06 15:46:58
【问题描述】:

MongoDB 能够编写任何结构的文档,即可以编写任何类型的键/值对。假设我使用这个特性,我的文档确实是无模式的,那么我如何管理读取,基本上应用程序代码(我正在使用 Java)如何管理从数据库中读取。

【问题讨论】:

  • 你想知道如何使用java客户端连接mongodb吗? getting-started-with-java-driver
  • 绝对不是。我正在尝试读取具有不同结构的文档,而不是对不同结构相关的读取进行硬编码。我正在寻找一些更有效的方法。
  • 并非所有 NoSQL 数据库都是无模式和/或面向文档的。我编辑了您的问题并将“NoSQL”替换为“MongoDB”,因为这似乎就是您的意思。

标签: java mongodb nosql


【解决方案1】:

java驱动以BasicBSONObjects读写文档,实现并使用Map<String, Object>。然后,您的应用程序代码负责读取此映射并将值转换为适当的类型。

MorphiaSpring MongoDB 之类的映射框架可以帮助您将 BSONObject 转换为您的类,反之亦然。

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

【讨论】:

  • 没错,但我真正的问题是处理 6-8 个模型(如果使用像 morhpia 这样的 ODM)。因为在一般情况下,每个文档都不同,它们必须映射到正确的模型(.class)。我的疑问是如何在运行时做出决定?它应该是一个 switch/if-else-if 结构,这通常不是最好的编码方式,还是有一个聪明的替代方案
  • 我面临的真正挑战是在应用程序代码中,我应该如何对其进行模块化以获得更好的代码
  • 您能否编辑您的问题并举例说明文档将如何变化?
  • @hershey92 我想支持 Joe Minichino 的请求。当您需要更具体的建议时,请给我们一个更具体的例子。
猜你喜欢
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
相关资源
最近更新 更多