Jongo mongo sv

20
Mongo + Java = Jongo Mongo and Java made easy ! by @karesti - MongoSV 2012 mardi 4 décembre 12

description

Jongo Quick presentation

Transcript of Jongo mongo sv

Page 1: Jongo mongo sv

Mongo + Java = JongoMongo and Java made easy !

by @karesti - MongoSV 2012

mardi 4 décembre 12

Page 2: Jongo mongo sv

Agile DeveloperMongoDB User

MongoDB Master@karesti

Katia Aresti

mardi 4 décembre 12

Page 3: Jongo mongo sv

Back on 2010 ...

mardi 4 décembre 12

Page 4: Jongo mongo sv

{mongo : "awesome"}mardi 4 décembre 12

Page 5: Jongo mongo sv

{DBObject : "not bad, not awesome"}

REST Web ServicesSearch of

POI-s

DBObject API

mardi 4 décembre 12

Page 6: Jongo mongo sv

Morphia ?

Back on 2010 ...

mardi 4 décembre 12

Page 7: Jongo mongo sv

MorphiaJPA-LIKE

mardi 4 décembre 12

Page 8: Jongo mongo sv

So ...• Morphia is great, good work !

• But : Need to learn another API => Mongo, Java Driver, Morphia

• But : JPA Like -> Mongo Paradigm is not JPA / Hibernate

• Morphia is comming to Java Driver ?

• Final choice :

• Morphia for the Java - DBObject Mapping

mardi 4 décembre 12

Page 9: Jongo mongo sv

Late 2011 ...

mardi 4 décembre 12

Page 10: Jongo mongo sv

Jongo

• What’s Jongo ?

• ODM on top of the Java Driver

• Jackson and BSON4Jackson for (Un)marshalling

• No JPA / Hibernate style

• Query in Java as in Mongo Shell

@bguerout

@amsellemyves

mardi 4 décembre 12

Page 11: Jongo mongo sv

DBCursor results = collection.find(query);

List<User> users = new ArrayList<User>(); for (DBObject result : results) {

User user = new User(); user.setUsername((String) result.get("username")); user.setAge((Integer) result.get("age")); users.add(user);}

DBCollection users = db.getCollection("users");

DBObject firstQuery = QueryBuilder.start("age").greaterThan(20).lessThan(30).get();

DBObject secondQuery = QueryBuilder.start("age").greaterThan(50).lessThan(60).get();

DBObject query = QueryBuilder.start().or(firstQuery,secondQuery).get();

db.users.find({ $or : [ { age : {$gt:20,$lt:30} } , { age : {$gt:50,$lt:60} } ] })

Java Driver :

DB db = mongo.getDB("users");

mardi 4 décembre 12

Page 12: Jongo mongo sv

Iterable<User> users = collection.find("{ $or : [ { age : {$gt:20,$lt:30} } , { age : {$gt:50,$lt:60} } ] }").as(User.class);

db.users.find({ $or : [ { age : {$gt:20,$lt:30} } , { age : {$gt:50,$lt:60} } ] })

Jongo find

MongoCollection collection = new Jongo(db).getCollection("users");

mardi 4 décembre 12

Page 13: Jongo mongo sv

DBCursor results = collection.find(query);

List<User> users = new ArrayList<User>(); for (DBObject result : results) {

User user = new User(); user.setUsername((String) result.get("username")); user.setAge((Integer) result.get("age")); users.add(user);}

DBCollection collection = db.getCollection("users");

DBObject firstQuery = QueryBuilder.start("age").greaterThan(20).lessThan(30).get();

DBObject secondQuery = QueryBuilder.start("age").greaterThan(50).lessThan(60).get();

DBObject query = QueryBuilder.start().or(firstQuery,secondQuery).get();

DB db = mongo.getDB("users");

Iterable<User> users = collection.find("{ $or : [ { age : {$gt:20,$lt:30} } , { age : {$gt:50,$lt:60} } ] }").as(User.class);

MongoCollection collection = new Jongo(db).getCollection("users");

mardi 4 décembre 12

Page 14: Jongo mongo sv

users.update("{name: 'Joe'}").upsert().multi().with("{$inc: {age: 1}}");

db.users.update({ name : 'Joe' } , { {$inc : {age : 1} }, true, true)

MongoCollection users = new Jongo(db).getCollection("users");

Jongo update

mardi 4 décembre 12

Page 15: Jongo mongo sv

Templating

MongoCollection collection = new Jongo(db).getCollection("users");

friends.find("{name: #, age: #}", "John", 18);

{name: 'John', age: 18}

mardi 4 décembre 12

Page 16: Jongo mongo sv

Aggregation Fw

MongoCollection collection = new Jongo(db).getCollection("emails");

collection.aggregate("{$project:{sender:1}}") .and("{$match:{tags:'read'}}") .and("{$limit:10}") .as(Email.class);

mardi 4 décembre 12

Page 17: Jongo mongo sv

Custom Mapper

MongoCollection collection = new Jongo(db).getCollection("users");

Iterable<Integer> ages = col.find("{'name':'John'}").map( new ResultMapper<Integer>() { @Override public Integer map(DBObject result) { return result.get("age"); } });

mardi 4 décembre 12

Page 18: Jongo mongo sv

Conclusion

• Mongo Shell is pleasure, Java+Mongo can be a pleasure too

• I would love Java Driver API was similar to Jongo !

mardi 4 décembre 12

Page 19: Jongo mongo sv

@bguerout - Benoit Guérout

@amsellemyves - Yves Amsellem

@karesti - Katia Aresti

https://github.com/bguerout/jongo

http://jongo.org/

mardi 4 décembre 12

Page 20: Jongo mongo sv

Thank you for listening !!!

mardi 4 décembre 12