MongoDB中的自定义类型映射

时间:2013-10-17 13:05:51

标签: spring-data-mongodb mongodb-java

首先我要说的是我的目标是尽可能快地完成阅读操作,所以如果你在我的代码/描述中找到可以帮助我实现这一目标的东西,请告诉我。

我有一个只读Web应用程序,它从MongoDB中提取对象。但是,我将返回给用户的响应对象不需要所有数据。目前看来,流程如下:

  • 从mongo
  • 中检索信息
  • 将该信息映射到对象
  • 使用访问器方法将值从所述对象传输到响应对象。
  • 将响应对象返回给用户。

我想通过将mongo中的数据直接映射到响应对象来组合步骤1和2。

我已经挖掘了DefaultMongoTypeMapper以及它所使用的所有类别,但在我确定它是正确的方向之前,我需要做很多事情。

除了我上面列出的内容外,我还有其他一些问题。一个是存储在Mongo中的对象没有_class字段,因为它们是原始数据(从我所看到的,类型映射器使用该字段来确定要映射到的类)。这样做的好处是,数据库中的所有内容都将映射到同一个对象,因此我们可以假设要使用哪个类。

有没有人做过这样的事情,或者对如何实现这一点有任何建议?

非常感谢。

1 个答案:

答案 0 :(得分:4)

如果您正在寻找最快的读取操作,可能首先要看的是使用MongoDB实际读取和通过网络传输的速度。 Java内的处理(在合理范围内)将占总请求时间的非常低的百分比。 您可能已经这样做了,但是看一下MongoDB的原始读取(索引,查询,记录数,数据库架构,配置等)

对于java处理,它非常依赖于你想对结果做什么。 我建议你为java处理的各种选项创建一些测试,这可能是CPU绑定的。如果您可以创建一次处理多个记录的测试,则可以看到每个记录的性能特征。

您可以从文档中手动编写创建POJO的代码吗?这可能是最高效的。 否则就像morphia https://code.google.com/p/morphia/

这样的ODM

如果您熟悉/使用Spring(如上所述),请参阅:http://projects.spring.io/spring-data-mongodb/或许请查看:http://spring.io/guides/gs/accessing-data-mongo/