2016-07-29 12 views
0

私は私が変更されたフィールドのみを更新する更新を記述する必要があり、このMongoDB Morphia。

{ 
    "id":"1090", 
    "title" : "My User", 
    "description" : "First User", 
    "country" : "US", 
    "state" : "FL", 
    "city" : "Miam" 
    "auth" : "Scott" 
} 

のようなJSONからの応答を取得するだけで新しいフィールドではなく、古いフィールドを更新します。

更新JSONは

{ 
    "id":"1090", 
    "title" : "New User", 
    "description" : "First User", 
    "country" : "US", 
    "state" : "Texas", 
    "city" : "Dallas" 
    "auth" : "Scott"} 

ように私は、私は上記のようにUpdateOperationsを書きたくない

Blog blogDB=datastore.find(Blog.class, "blog_ID", blog.getBlog_ID()).get(); 
Query<Blog> query = datastore.createQuery(Blog.class).field("_id").equal(blogDB.getId()); //Find the object that is in database 

UpdateOperations<Blog> ops = datastore.createUpdateOperations(Blog.class).set("title", blog.getcountry()).set("country", blog.getcity()).set("city", .... 

datastore.update(query, ops); 

の下に使用して達成することができます見えます。それ以上の効率的な方法はありますか?

答えて

0

モルフィアにはダーティー状態トラッキングはありません。これらの変更を手動で追跡する必要があります。

+0

evanchooly、あなたはすべてのset(field1).set(field2).set(field3)... set(fieldn)を書く必要があることを意味します。それにもかかわらず、データベース文書のすべてのフィールドのチェーンとしてJSONファイルから来る新しいデータか既存のデータか? –

+0

はい、新しい/変更されたフィールドをデータベースに永続化したい場合のみです。 – evanchooly

+0

ちょっとエヴァンスクール、私が聞いている質問は、私が頼んだこととは違っています。リストリスト= datastore.find(User.class).asList();私はmongo dbに存在するすべてのユーザーを取得しなければならないサービスクラスのこのコード行を持っています。しかし何らかの理由でclassNotFoundExceptionという警告が表示されます。警告:dbObjに定義されたクラスが見つかりません: java.lang.ClassNotFoundException:com.user.model.User –

関連する問題