2016-08-12 49 views
1

是否有某種方法可以從MongoDB值讀取我的類型對象,而無需將它們從SimpleDBObject轉換爲對象?MongoDB將文檔轉換爲自定義類型

我試圖讓所有的文件從收集與coll.find()但是當我遍歷它們,我得到

無法找到接口com.mynamespace.models.interfaces.Profile編解碼器。

什麼是正確的方法?我使用標準的Java驅動程序。據我所知在C#和Couchbase中,我只是將文檔寫入/讀取到自定義類型中。這裏有什麼方法?

回答

0

我以前用過的東西是Mongo Jack。這提供了一個簡單的包裝,根據他們的文檔,它直接映射來自Mongo流的POJO,而不需要中間的SimpleDBObject。這也使用Jackson庫,所以你可以使用Jackson序列化和反序列化註釋。

這是網站這樣說:

Deserialises直接從MongoDB的流查詢對象,使其成爲(如果不是)最快對象映射器MongoDB的在那裏的一個。

也許這是你在找什麼,是嗎?

下面是從網站的例子:

JacksonDBCollection<MyObject, String> coll = JacksonDBCollection.wrap(dbCollection, MyObject.class, 
     String.class); 
MyObject myObject = ... 
WriteResult<MyObject, String> result = coll.insert(myObject); 
String id = result.getSavedId(); 
MyObject savedObject = coll.findOneById(id); 
+0

是的,這樣的事情。那麼,我說的沒有像Mongo + Java組合中的直接序列化/反序列化嗎?沒有第三方庫我的意思是 – ArkadyB

+0

@ArkadyB根據網站上的描述,他們直接從Mongo流反序列化,從網站:「Deserialises直接從MongoDB流中查詢對象,使其成爲一個(如果不是)最快的MongoDB對象映射器「 - Mongo Jack網站 – Himself12794

+0

@ArkadyB是的,我在我的答案中包含了一個,但如果你想要更多,你可能想試試[tutorial](http://mongojack.org /tutorial.html)。 – Himself12794

0

在蒙戈-Java的應用程序的新Codec基礎設施> = 3.0幾乎你想要做什麼。您必須手動創建編解碼器,但也有一些努力create codecs automatically

還有其他成熟的ODM框架,如Morphia和Spring Data MongoDB。

0

Morphia是官方支持的用於MongoDB和Java的ODM。可以爲您的Java對象編寫自定義編解碼器,以便序列化對於您的應用程序而言基本上是透明的。 Spring數據和mongojack也是很好的選擇。雖然我並不完全確定現在mongojack是如何被開發的,但我仍然積極維護Spring數據。

相關問題