2013-10-17 135 views
4

让我开始说我的目标是实现最快的读取操作,因为如果您在我的代码/描述中找到可以帮助我实现的操作,请告诉我。MongoDB中的自定义类型映射

我有一个只读的web应用程序,它从MongoDB中提取对象。但是,我将返回给用户的响应对象不需要所有的数据。由于它现在代表,其过程如下:

  • 从蒙戈
  • 地图信息检索信息的对象
  • 使用存取方法从所述物体转移值响应对象。
  • 将响应对象返回给用户。

我想结合第1步和第2步,只是将数据从mongo中直接映射到响应对象。

我已经通过DefaultMongoTypeMapper及其所使用的所有类别挖掘出来了,但在我确定它是正确的方向之前,我的头很多。

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

有没有人做过这样的事情就是过去,或者对如何做到这一点有任何建议?

非常感谢。

回答

4

如果您正在寻找最快的读取操作,可能首先要看的是实际读取的速度,以及通过网络与MongoDB进行传输的速度。 Java内的处理(合理范围内)将占总请求时间的很小的百分比。 您可能已经这样做了,但看看MongoDB的原始读取(索引,查询,记录数量,数据库模式,配置等)

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

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

如果您熟悉/使用Spring(如上所述)已见:http://projects.spring.io/spring-data-mongodb/也许看一看:http://spring.io/guides/gs/accessing-data-mongo/