2016-08-12 6 views
1

MongoDB値をSimpleDBObjectから変換せずに、自分のタイプのオブジェクトに読み込む方法はありますか?MongoDBドキュメントをカスタムタイプにキャストする

私はcoll.find()でコレクションからすべての文書を取得することを試みたが、私はそれらを反復処理するとき、私は、インタフェースcom.mynamespace.models.interfaces.Profileのためのコーデックを見つけることができません

を取得します。

正しい方法はありますか?私は標準のJavaドライバを使用します。

私がC#とCouchbaseで覚えている限り、私は単に私のカスタムタイプに文書を書いたり読んだりしていました。ここには何がありますか?

答えて

0

私が過去に使用したものは、Mongo Jackです。これにより、ドキュメントによれば、中間のSimpleDBObjectなしでMongoストリームからPOJOを直接マップする簡単なラッパーが提供されます。これは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をWebサイトの記述に従って、ウェブサイトからMongoストリームから直接非直列化します。「MongoDBストリームからオブジェクトを直接照会して、そこにMongoDBのための最も速いオブジェクトマッパー - Mongoジャックウェブサイト – Himself12794

+0

@ArkadyBはい、私は答えに1つを含めましたが、あなたがもっと探しているなら、あなたは[チュートリアル](http://mongojack.org /tutorial.html)をご覧ください。 – Himself12794

0

のmongo-javaのドライバで新Codecインフラ> = 3.0ほとんど何をしたいん。手動でコーデックを作成する必要がありますが、create codecs automaticallyにはいくつかの努力もあります。

MorphiaやSpring Data MongoDBなどの他の本格的なODMフレームワークもあります。

0

Morphiaは、MongoDBとJavaの正式にサポートされているODMです。シリアライズがアプリケーションにほとんど透過的になるように、カスタムコーデックをJavaオブジェクト用に記述することができます。春のデータとmongojackも素晴らしい選択肢です。最近の活発なモンゴジャックがどのように開発されているかは完全にはわかりませんが、春のデータは積極的に維持されています。

関連する問題