POJO作为mongodb中的文档

时间:2017-02-14 06:18:14

标签: java entities annotated-pojos

我正在尝试将实体保存为Mongodb中的文档,并尝试为其创建编解码器。它似乎不起作用。我尝试了Morphia但是,我无法找到有关在运行时使用morphia将额外字段添加到文档中的文档。这将违背首先使用Mongodb的基本目的。 我最初希望我的文档具有POJO中固定数量的字段。在应用程序运行期间,字段数应该改变

任何人都可以建议我该怎么办

1 个答案:

答案 0 :(得分:0)

我不知道这是不是很好的解决方案,但这就是我所做的。 如果你没有使用Morphia for Mongodb。并且您希望POJO实体被序列化。您可以像下面的代码一样执行此操作。但如果要组织数据,则必须维护setter调用序列 下面是两个提供一些提示的课程

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);
}

}

和序列化它的类将是这样的

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("gh@gmail.com");
    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();
    }

}
}