POJOs как документы в mongodb

Я пытаюсь сохранить объект как документы в Mongodb и попытался создать кодек для него. И это не похоже на работу. Я пробовал Morphia, но я не могу найти документацию по добавлению дополнительных полей в документ во время выполнения с использованием morphia. это бросило бы вызов основной цели использования Mongodb в первую очередь. Сначала я хочу, чтобы в моих документах было фиксированное количество полей в POJO . и во время выполнения приложения количество полей должно измениться

Кто-нибудь может подсказать мне, что мне делать

1 ответ

Решение

Я не знаю, если это хорошее решение, но вот что я сделал. Если вы не используете Morphia для Mongodb . и вы хотите, чтобы ваша сущность POJO была сериализована. Вы можете сделать это, как показано ниже. но вы должны поддерживать последовательность вызовов сеттеров, если хотите, чтобы данные были организованы ниже, это два класса, которые дают некоторую подсказку

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

}
}
Другие вопросы по тегам