Inserting Java Object to MongoDB Collection Using Java Inserting Java Object to MongoDB Collection Using Java mongodb mongodb

Inserting Java Object to MongoDB Collection Using Java


I'm a little confused as to know why you'd think this would work in the first place. The first thing you need to know is how to map your POJO to a MongoDB document. Currently, you're not telling the system(your code) how to do that.

You can either use a mapping library for this (Morphia comes to mind) or use ReflectionDBObject. Either solution allows you to map POJO to MongoDB document or MongoDB document to POJO(the former way is a lot more nicely than the latter).


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

I thought that it would be useful to post code that did conversions both ways.
Storing an Employee Object
Finding and re-creating an employee Object
Hope this is useful..


Pro
you continue to work with strong typed objects as you wanted to

Contra
Some people really dislike : extends

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

In addition to morphia you should take a look to jongo : http://jongo.org/jongo use the same form syntax as js mongo engine, and I found it great point for a beginner. You don't have to switch your mental map between mongojs and java. you can use the js sample with little changes.