2013-10-17 205 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/