Saltar al contenido

Insertar objeto Java en la colección MongoDB usando Java

Recuerda que en las ciencias informáticas cualquier problema casi siempere suele tener diversas soluciones, no obstante nosotros te mostraremos lo más óptimo y eficiente.

Solución:

Estoy un poco confundido en cuanto a saber por qué pensarías que esto funcionaría en primer lugar. Lo primero que debe saber es cómo asignar su POJO a un documento MongoDB. Actualmente, no le está diciendo al sistema (su código) cómo hacerlo.

Puede usar una biblioteca de mapeo para esto (me viene a la mente Morphia) o usar ReflectionDBObject. Cualquiera de las soluciones le permite asignar POJO a un documento MongoDB o un documento MongoDB a POJO (la primera forma es mucho mejor que la última).

DB db = mongoClient.getDB( "mydb" );

coll = db.getCollection("testCollection");

Employee emp = new Employee();
emp.setId("1001");
emp.setName("John Doe");

//Converting a custom Class(Employee) to BasicDBObject
Gson gson = new Gson();
BasicDBObject obj = (BasicDBObject)JSON.parse(gson.toJson(emp));
coll.insert(obj);
findEmployee(new BasicDBObject("id","1001"));


public static void findEmployee(BasicDBObject query)

    DBCursor cursor = coll.find(query);

    try 
       while(cursor.hasNext()) 
          DBObject dbobj = cursor.next();
        //Converting BasicDBObject to a custom Class(Employee)
          Employee emp = (new Gson()).fromJson(dbobj.toString(), Employee.class);
          System.out.println(emp.getName());
       
     finally 
       cursor.close();
    


Pensé que sería útil publicar un código que hiciera conversiones en ambos sentidos.
Almacenamiento de un objeto de empleado
Encontrar y volver a crear un objeto de empleado
Espero que esto sea útil..

Pro
continúas trabajando con objetos fuertemente tipados como querías

Contra
A algunas personas realmente no les gusta: se extiende


package foo;
import com.mongodb.BasicDBObject;

public class Employee extends BasicDBObject

private static final long serialVersionUID = 2105061907470199595L;
//should be something shorter as "name" like "n" 
//here just use name to conform your  sample
public static final String NAME = "name";
public static final String NO = "no";
public static final String COLLECTION_NAME = "employee";

public Long getNo() 
    return getLong(NO);


public void setNo(long no) 
    put(NO, no);


public String getName() 
    return getString(NAME);


public void setName(String name) 
    put(NAME, name);


package foo;
import java.net.UnknownHostException;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

public class Test

public static void main(String[] args) throws UnknownHostException,
        MongoException 

    Mongo mongo = new Mongo("localhost", 27017);
    DB db = mongo.getDB("yeahMongo");

    Employee employee = new Employee();
    employee.setNo(1L);
    employee.setName("yogesh");

    DBCollection employeeCollection = null ;
    employeeCollection = db.getCollection(Employee.COLLECTION_NAME);

    employeeCollection.save(employee);

    System.err.println(employeeCollection.findOne());


Además de morphia, deberías echarle un vistazo a jongo: http://jongo.org/ jongo usa la misma sintaxis de forma que el motor js mongo, y me pareció un gran punto para un principiante. No tiene que cambiar su mapa mental entre mongojs y java. puede usar la muestra js con pequeños cambios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *