2017-02-14 4 views
1

Mongodbのドキュメントとしてエンティティを保存しようとしていて、そのためのコーデックを作成しようとしました。そして、それは動作していないようです。私はMorphiaを試しましたが、実行時にmorphiaを使用して文書に余分なフィールドを追加することについてのドキュメントを見つけることができません。これは最初の場所でMongodbを使用する基本的な目的に反します。 私は最初に私の文書にPOJOにあるフィールドの数を固定したいと思っています。そしてアプリケーションの実行中にフィールドの数がmongodbのドキュメントとしてのPOJO

を変更する必要がありますいずれかが、これは良い解決策ですが、ここに私がやったことであるならば、私は知らない私は

答えて

0

を何をすべき私を提案することができます。 Morphia for Mongodbを使用していない場合。 POJOエンティティをシリアル化する必要があります。あなたは以下のコードショーのようにこれを行うことができます。しかし、あなたは、データは以下がこの

package com.mongodb.sample; 

import org.bson.BsonDocument; 
import org.bson.Document; 

import com.mogodbsample.config.DBconfig; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoCursor; 
import com.mongodb.client.MongoDatabase; 
import com.mongodbtest.entities.User; 

public class Firstmongoaccess { 

public static void main(String... args) { 
    MongoDatabase dataase = DBconfig.getdatabase(); 
    MongoCollection<User> collection = dataase.getCollection("users", User.class); 

    User u1 = new User(); 
    u1.setAddress(new StringBuilder("something street bangalore 356322")); 
    u1.setName("xxxxxx"); 
    u1.setEmail("[email protected]"); 
    u1.setPhno(3263433); 

    collection.insertOne(u1); 
    MongoCursor<? extends BsonDocument> cursor = collection.find().iterator(); 
    try { 
     while (cursor.hasNext()) { 
      System.out.println(cursor.next().toJson()); 
     } 
    } finally { 
     cursor.close(); 
    } 

} 
} 
のようになりますシリアライズ2つのいくつかのヒント

package com.mongodbtest.entities; 

import java.io.Serializable; 

import org.bson.Document; 

import org.bson.BsonDocument; 
import org.bson.BsonInt32; 
    import org.bson.BsonNumber; 
import org.bson.BsonString; 

public class User extends BsonDocument { 

/** 
    * 
    */ 
private static final long serialVersionUID = -9167404209850672507L; 
// private String _id; 
private BsonString name; 
private BsonString email; 
private BsonString address; 
private BsonInt32 phno; 

public User(String name, String email, StringBuilder address, Number phno) { 
    super(); 
    this.name = new BsonString(name); 
    this.email = new BsonString(email); 
    this.address = new BsonString(address.toString()); 
    this.phno = new BsonInt32(phno.intValue()); 
} 

public User() { 
} 

public BsonString getName() { 
    return this.name; 
} 

public void setName(String name) { 
    this.name = new BsonString(name); 
    this.append("name", this.name); 

} 

public BsonString getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = new BsonString(email); 
    this.append("email", this.email); 
} 

public BsonString getAddress() { 
    return address; 
} 

public void setAddress(StringBuilder address) { 
    this.address = new BsonString(address.toString()); 
    this.append("address", this.address); 
} 

public BsonInt32 getPhno() { 
    return phno; 
} 

public void setPhno(Number phno) { 
    this.phno = new BsonInt32(phno.intValue()); 
    this.append("phno", this.phno); 
} 

} 

に与えクラスとクラスです を整理することにしたい場合はセッターの呼び出しシーケンスを維持する必要が

関連する問題