SlideShare a Scribd company logo
Mongo+java (1)
MongoDB + Java
Everything you need to know
Agenda
• MongoDB + Java
• Driver
• ODM's
• JVM Languages
• Hadoop
Ola, I'm Norberto!
Norberto Leite
Technical Evangelist
Madrid, Spain
@nleite
norberto@mongodb.com
http://www.mongodb.com/norberto
A few announcements…
Announcements
Announcements
• Java 3.0.0-beta2 available for testing
– Generic MongoCollection
– New Codec infrastructure
– Asynchronous Support
– New core driver
• Better support for JVM languages
– https://github.com/mongodb/mongo-java-
driver/releases/tag/r3.0.0-beta2
• RX Streams – testing only!
– https://github.com/rozza/mongo-java-driver-
reactivestreams
http://www.humanandnatural.com/data/media/178/badan_jaran_desert_oasis_china.jpg
Let's go and test this!
http://www.tinypm.com/blog/wp-content/uploads/2015/01/hammer.jpg
Java Driver
Getting Started
• Review our documentation
– http://docs.mongodb.org/ecosystem/drivers/java/
Connecting
http://std3.ru/d3/09/1379154681-d309dacac47a71fb92480157f1d9a0ea.jpg
Connecting
public void connect() throws UnknownHostException{
String host = "mongodb://localhost:27017";
//connect to host
MongoClient mongoClient = new MongoClient(host);
…
}
Connecting
public void connect() throws UnknownHostException{
String host = "mongodb://localhost:27017";
//connect to host
MongoClient mongoClient = new MongoClient(host);
…
}
Client Instance
Host Machine
Connecting
public void connectServerAddress() throws UnknownHostException{
String host = "mongodb://localhost:27017";
//using ServerAddress
ServerAddress serverAddress = new ServerAddress(host);
//connect to host
MongoClient mongoClient = new MongoClient(serverAddress);
…
}
Connecting
public void connectServerAddress() throws UnknownHostException{
String host = "mongodb://localhost:27017";
//using ServerAddress
ServerAddress serverAddress = new ServerAddress(host);
//connect to host
MongoClient mongoClient = new MongoClient(serverAddress);
…
}
Server Address Instance
Connecting
public boolean connectReplicas() throws UnknownHostException{
//replica set members
String []hosts = {
"mongodb://localhost:30000",
"mongodb://localhost:30001",
"mongodb://localhost:30000",
};
//list of ServerAdress
List<ServerAddress> seeds = new ArrayList<ServerAddress>();
for (String h: hosts){
seeds.add(new ServerAddress(h));
}
//connect to host
MongoClient mongoClient = new MongoClient(seeds);
…
}
Connecting
public boolean connectReplicas() throws UnknownHostException{
//replica set members
String []hosts = {
"mongodb://localhost:30000",
"mongodb://localhost:30001",
"mongodb://localhost:30000",
};
//list of ServerAdress
List<ServerAddress> seeds = new ArrayList<ServerAddress>();
for (String h: hosts){
seeds.add(new ServerAddress(h));
}
//connect to host
MongoClient mongoClient = new MongoClient(seeds);
…
}
Seed List
Database & Collections
public void connectDatabase(final String dbname, final String collname){
//database instance
DB database = mongoClient.getDB(dbname);
//collection instance
DBCollection collection = database.getCollection(collname);
https://api.mongodb.org/java/current/com/mongodb/DB.html
https://api.mongodb.org/java/current/com/mongodb/DBCollection.html
Security
public void connectServerAddress() throws UnknownHostException{
String host = "localhost:27017";
ServerAddress serverAddress = new ServerAddress(host);
String dbname = "test";
String userName = "norberto";
char[] password = {'a', 'b', 'c'};
MongoCredential credential = MongoCredential
.createMongoCRCredential(userName, dbname, password);
MongoClient mongoClient = new MongoClient(serverAddress,
Arrays.asList(credential));
http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-
driver/#authentication-optional
Writing
http://std3.ru/d3/09/1379154681-d309dacac47a71fb92480157f1d9a0ea.jpg
Inserting
public boolean insertObject(SimplePojo p){
//lets insert on database `test`
String dbname = "test";
//on collection `simple`
String collname = "simple";
DBCollection collection = mc.getDB(dbname).getCollection(collname);
DBObject document = new BasicDBObject();
document.put("name", p.getName());
document.put("age", p.getAge());
document.put("address", p.getAddress());
//db.simple.insert( { "name": XYZ, "age": 45, "address": "49 Rue de Rivoli, 75001
Paris"})
collection.insert(document);…
}
Inserting
public boolean insertObject(SimplePojo p){
//lets insert on database `test`
String dbname = "test";
//on collection `simple`
String collname = "simple";
DBCollection collection = mc.getDB(dbname).getCollection(collname);
DBObject document = new BasicDBObject();
document.put("name", p.getName());
document.put("age", p.getAge());
document.put("address", p.getAddress());
//db.simple.insert( { "name": XYZ, "age": 45, "address": "49 Rue de Rivoli, 75001 Paris"})
collection.insert(document);
…
}
Collection instance
BSON wrapper
Inserting
public boolean insertObject(SimplePojo p){
…
WriteResult result = collection.insert(document);
//log number of inserted documents
log.debug("Number of inserted results " + result.getN() );
…
}
https://api.mongodb.org/java/current/com/mongodb/DBObject.html
https://api.mongodb.org/java/current/com/mongodb/WriteResult.html
Update
public long savePojo(SimplePojo p) {
DBObject document = BasicDBObjectBuilder.start()
.add("name", p.getName())
.add("age", p.getAge())
.add("address", p.getAddress()).get();
//method replaces the existing database document by this new one
WriteResult res = this.collection.save(document);
//if it does not exist will create one (upsert)
return res.getN();
}
Update
public long savePojo(SimplePojo p) {
DBObject document = BasicDBObjectBuilder.start()
.add("name", p.getName())
.add("age", p.getAge())
.add("address", p.getAddress()).get();
//method replaces the existing database document by this new one
WriteResult res = this.collection.save(document);
//if it does not exist creates one (upsert)
return res.getN();
}
Save method
Update
public long updateAddress( SimplePojo p, Address a ){
//{ 'name': XYZ}
DBObject query = QueryBuilder.start("name").is(p.getName()).get();
DBObject address = BasicDBObjectBuilder.start()
.add("street", a.getStreet())
.add("city", a.getCity())
.add("number", a.getNumber())
.add("district", a.getDistrict()).get();
DBObject update = BasicDBObjectBuilder.start().add("name",
p.getName()).add("age", p.getAge()).add("address", address).get();
return this.collection.update(query, update).getN();
}
Update
public long updateAddress( SimplePojo p, Address a ){
//{ 'name': XYZ}
DBObject query = QueryBuilder.start("name").is(p.getName()).get();
DBObject address = BasicDBObjectBuilder.start()
.add("street", a.getStreet())
.add("city", a.getCity())
.add("number", a.getNumber())
.add("district", a.getDistrict()).get();
DBObject update = BasicDBObjectBuilder.start().add("name",
p.getName()).add("age", p.getAge()).add("address", address).get();
return this.collection.update(query, update).getN();
}
Query Object
Update Object
Update
public long updateSetAddress( SimplePojo p, Address a ){
//{ 'name': XYZ}
DBObject query = QueryBuilder.start("name").is(p.getName()).get();
DBObject address = BasicDBObjectBuilder.start()
.add("street", a.getStreet())
.add("city", a.getCity())
.add("number", a.getNumber())
.add("district", a.getDistrict()).get();
//db.simple.update( {"name": XYZ}, {"$set":{ "address": ...} } )
DBObject update = BasicDBObjectBuilder.start()
.append("$set", new BasicDBObject("address", address) ).get();
return this.collection.update(query, update).getN();
}
Update
public long updateSetAddress( SimplePojo p, Address a ){
//{ 'name': XYZ}
DBObject query = QueryBuilder.start("name").is(p.getName()).get();
DBObject address = BasicDBObjectBuilder.start()
.add("street", a.getStreet())
.add("city", a.getCity())
.add("number", a.getNumber())
.add("district", a.getDistrict()).get();
//db.simple.update( {"name": XYZ}, {"$set":{ "address": ...} } )
DBObject update = BasicDBObjectBuilder.start()
.append("$set", new BasicDBObject("address", address) ).get();
return this.collection.update(query, update).getN();
}
Using $set operator
http://docs.mongodb.org/manual/reference/operator/update/
Remove
public long removePojo( SimplePojo p){
//query object to match documents to be removed
DBObject query = BasicDBObjectBuilder.start().add("name", p.getName()).get();
return this.collection.remove(query).getN();
}
Remove
public long removePojo( SimplePojo p){
//query object to match documents to be removed
DBObject query = BasicDBObjectBuilder.start()
.add("name", p.getName()).get();
return this.collection.remove(query).getN();
}
Matching query
Remove All
public long removeAll( ){
//empty object removes all documents > db.simple.remove({})
return this.collection.remove(new BasicDBObject()).getN();
}
Empty document
http://docs.mongodb.org/manual/reference/method/db.collection.remove/
WriteConcern
http://std3.ru/d3/09/1379154681-d309dacac47a71fb92480157f1d9a0ea.jpghttp://www.theworldeffect.com/images/6a00e54fa8abf78833011570eedcf1970b-800wi.jpg
WriteConcern
//Default
WriteConcern w1 = WriteConcern.ACKNOWLEDGED;
WriteConcern w0 = WriteConcern.UNACKNOWLEDGED;
WriteConcern j1 = WriteConcern.JOURNALED;
WriteConcern wx = WriteConcern.REPLICA_ACKNOWLEDGED;
WriteConcern majority = WriteConcern.MAJORITY;
https://api.mongodb.org/java/current/com/mongodb/WriteConcern.html
WriteConcern.ACKNOWLEDGED
WriteConcern.UNACKNOWLEDGED
WriteConcern.JOURNALED
WriteConcern.REPLICA_ACKNOWLEDGED
WriteConcern
public boolean insertObjectWriteConcern(SimplePojo p){
…
WriteResult result = collection.insert(document,
WriteConcern.REPLICA_ACKNOWLEDGED);
//log number of inserted documents
log.debug("Number of inserted results " + result.getN() );
//log the last write concern used
log.info( "Last write concern used "+ result.getLastConcern() );…
}
WriteConcern
public boolean insertObjectWriteConcern(SimplePojo p){
…
WriteResult result = collection.insert(document,
WriteConcern.REPLICA_ACKNOWLEDGED);
//log number of inserted documents
log.debug("Number of inserted results " + result.getN() );
//log the last write concern used
log.info( "Last write concern used "+ result.getLastConcern() );
…
}
Confirm on Replicas
WriteConcern
public void setWriteConcernLevels(WriteConcern wc){
//connection level
this.mc.setWriteConcern(wc);
//database level
this.mc.getDB("test").setWriteConcern(wc);
//collection level
this.mc.getDB("test").getCollection("simple").setWriteConcern(wc);
//instruction level
this.mc.getDB("test").getCollection("simple").insert( new BasicDBObject() ,
wc);
}
Bulk Write
http://images.fineartamerica.com/images-medium-large/2-my-old-bucket-curt-simpson.jpg
Write Bulk
public boolean bulkInsert(List<SimplePojo> ps){
…
//initialize a bulk write operation
BulkWriteOperation bulkOp = coll.initializeUnorderedBulkOperation();
for (SimplePojo p : ps){
DBObject document = BasicDBObjectBuilder.start()
.add("name", p.getName())
.add("age", p.getAge())
.add("address", p.getAddress()).get();
bulkOp.insert(document);
}
//call the set of inserts
bulkOp.execute();
…
}
Inserting Bulk
public void writeSeveral( SimplePojo p, ComplexPojo c){
//initialize ordered bulk
BulkWriteOperation bulk = this.collection.initializeOrderedBulkOperation();
DBObject q1 = BasicDBObjectBuilder.start()
.add("name", p.getName()).get();
//remove the previous document
bulk.find(q1).removeOne();
//insert the new document
bulk.insert( c.encodeDBObject() );
BulkWriteResult result = bulk.execute();
//do something with the result
result.getClass();
}
Reading
http://std3.ru/d3/09/1379154681-d309dacac47a71fb92480157f1d9a0ea.jpghttp://1.bp.blogspot.com/_uYSlZ_2-VwI/SK0TrNUBVBI/AAAAAAAAASs/5334Tlv0IIY/s1600-h/lady_reading_book.jpg
Read
public SimplePojo get(){
//basic findOne operation
DBObject doc = this.collection.findOne();
SimplePojo pojo = new SimplePojo();
//casting to destination type
pojo.setAddress((String) doc.get("address"));
pojo.setAge( (int) doc.get("age") );
pojo.setAddress( (String) doc.get("address") );
return pojo;
}
Read
public List<SimplePojo> getSeveral(){
List<SimplePojo> pojos = new ArrayList<SimplePojo>();
//returns a cursor
DBCursor cursor = this.collection.find();
//iterates over the cursor
for (DBObject document : cursor){
//calls factory or transformation method
pojos.add( this.transform(document) );
}
return pojos;
}
Read
public List<SimplePojo> getSeveral(){
List<SimplePojo> pojos = new ArrayList<SimplePojo>();
//returns a cursor
DBCursor cursor = this.collection.find();
//iterates over the cursor
for (DBObject document : cursor){
//calls factory or transformation method
pojos.add( this.transform(document) );
}
return pojos;
}
Returns Cursor
Read
public List<SimplePojo> getAtAge(int age) {
List<SimplePojo> pojos = new ArrayList<SimplePojo>();
DBObject criteria = new BasicDBObject("age", age);
// matching operator { "age": age}
DBCursor cursor = this.collection.find(criteria);
// iterates over the cursor
for (DBObject document : cursor) {
// calls factory or transformation method
pojos.add(this.transform(document));
}
return pojos;
}
Matching operator
Read
public List<SimplePojo> getOlderThan( int minAge){
…
DBObject criteria = new BasicDBObject( "$gt",
new BasicDBObject("age", minAge));
// matching operator { "$gt": { "age": minAge} }
DBCursor cursor = this.collection.find(criteria);
…
}
Read
public List<SimplePojo> getOlderThan( int minAge){
…
DBObject criteria = new BasicDBObject( "$gt",
new BasicDBObject("age", minAge));
// matching operator { "$gt": { "age": minAge} }
DBCursor cursor = this.collection.find(criteria);
…
}
Range operator
http://docs.mongodb.org/manual/reference/operator/query/
Read & Filtering
public String getAddress(final String name) {
DBObject criteria = new BasicDBObject("name", name);
//we want the address field
DBObject fields = new BasicDBObject( "address", 1 );
//and exclude _id too
fields.put("_id", 0);
// db.simple.find( { "name": name}, {"_id:0", "address":1} )
DBObject document = this.collection.findOne(criteria, fields);
//we can check if this is a partial document
document.isPartialObject();
return (String) document.get("address");
}
Read & Filtering
public String getAddress(final String name) {
DBObject criteria = new BasicDBObject("name", name);
//we want the address field
DBObject fields = new BasicDBObject( "address", 1 );
//and exclude _id too
fields.put("_id", 0);
// db.simple.find( { "name": name}, {"_id:0", "address":1} )
DBObject document = this.collection.findOne(criteria, fields);
//we can check if this is a partial document
document.isPartialObject();
return (String) document.get("address");
}
Select fields
Read Preference
http://2.bp.blogspot.com/-CW3UtTpWoqg/UHhJ0gzjxcI/AAAAAAAAQz0/l_ozSnrwkvo/s1600/Grigori+Semenovich+Sedov+-+Choosing+the+bride+of+Czar+Alexis.jpg
Read Preference
//default
ReadPreference.primary();
ReadPreference.primaryPreferred();
ReadPreference.secondary();
ReadPreference.secondaryPreferred();
ReadPreference.nearest();
https://api.mongodb.org/java/current/com/mongodb/ReadPreference.html
Read Preference – Tag Aware
//read from specific tag
DBObject tag = new BasicDBObject( "datacenter", "Porto" );
ReadPreference readPref = ReadPreference.secondary(tag);
http://docs.mongodb.org/manual/tutorial/configure-replica-set-tag-sets/
Read Preference
public String getName( final int age ){
DBObject criteria = new BasicDBObject("age", age);
DBObject fields = new BasicDBObject( "name", 1 );
//set to read from nearest node
DBObject document = this.collection.findOne(criteria, fields,
ReadPreference.nearest() );
//return the element
return (String) document.get("name");
}
Read Preference
Aggregation
// create our pipeline operations, first with the $match
DBObject match = new BasicDBObject("$match", new
BasicDBObject("type", "airfare"));
// build the $projection operation
DBObject fields = new BasicDBObject("department", 1);
fields.put("amount", 1);
fields.put("_id", 0);
DBObject project = new BasicDBObject("$project", fields );
// Now the $group operation
DBObject groupFields = new BasicDBObject( "_id", "$department");
groupFields.put("average", new BasicDBObject( "$avg", "$amount"));
DBObject group = new BasicDBObject("$group", groupFields);
…
Aggregation
// Finally the $sort operation
DBObject sort = new BasicDBObject("$sort", new BasicDBObject("amount",
-1));
// run aggregation
List<DBObject> pipeline = Arrays.asList(match, project, group, sort);
AggregationOutput output = coll.aggregate(pipeline);
Java ODM's
Morphia
Morphia
Morphia
public class Employee {
// auto-generated, if not set (see ObjectId)
@Id ObjectId id;
// value types are automatically persisted
String firstName, lastName;
// only non-null values are stored
Long salary = null;
// by default fields are @Embedded
Address address;
…
}
Morphia
public class Employee {
…
//references can be saved without automatic loading
Key<Employee> manager;
//refs are stored**, and loaded automatically
@Reference List<Employee> underlings = new ArrayList<Employee>();
// stored in one binary field
@Serialized EncryptedReviews encryptedReviews;
//fields can be renamed
@Property("started") Date startDate;
@Property("left") Date endDate;
…
}
SpringData
Spring Data
http://projects.spring.io/spring-data-mongodb/
Jongo
Jongo
http://jongo.org/
Others
• DataNucleus JPA/JDO
• lib-mongomapper
• Kundera
• Hibernate OGM
JVM Languages
Scala
• http://docs.mongodb.org/ecosystem/drivers/scala/
• Cashbah
– Java Driver Wrapper
– Idiomatic Scala Interface for MongoDB
• Community
– Hammersmith
– Salat
– Reactive Mongo
– Lift Web Framework
– BlueEyes
– MSSD
Clojure
http://clojuremongodb.info/
Groovy
https://github.com/poiati/gmongo
Hadoop
MongoDB Hadoop Connector
• MongoDB and BSON
– Input and Output formats
• Computes splits to read data
• Support for
– Filtering data with MongoDB queries
– Authentication (and separate for configdb)
– Reading from shard Primary directly
– ReadPreferences and Replica Set tags (via MongoDB URI)
– Appending to existing collections (MapReduce, Pig, Spark)
For More Information
Resource Location
Case Studies mongodb.com/customers
Presentations mongodb.com/presentations
Free Online Training education.mongodb.com
Webinars and Events mongodb.com/events
Documentation docs.mongodb.org
MongoDB Downloads mongodb.com/download
Additional Info info@mongodb.com
http://cl.jroo.me/z3/v/D/C/e/a.baa-Too-many-bicycles-on-the-van.jpg
Questions?
@nleite
norberto@mongodb.com
http://www.mongodb.com/norberto
Mongo+java (1)

More Related Content

What's hot (20)

PDF
Building Apps with MongoDB
Nate Abele
 
PPTX
Getting Started with MongoDB and NodeJS
MongoDB
 
PPTX
Back to Basics Webinar 5: Introduction to the Aggregation Framework
MongoDB
 
PPTX
Back to Basics Webinar 4: Advanced Indexing, Text and Geospatial Indexes
MongoDB
 
PPTX
Morphia, Spring Data & Co.
Tobias Trelle
 
PPTX
Java Persistence Frameworks for MongoDB
Tobias Trelle
 
PDF
What do you mean, Backwards Compatibility?
Trisha Gee
 
PPTX
Webinaire 2 de la série « Retour aux fondamentaux » : Votre première applicat...
MongoDB
 
KEY
MongoDB, PHP and the cloud - php cloud summit 2011
Steven Francia
 
PDF
Hadoop - MongoDB Webinar June 2014
MongoDB
 
PPTX
Webinar: Transitioning from SQL to MongoDB
MongoDB
 
PPS
MongoDB crud
Darshan Jayarama
 
PDF
MongoDB Europe 2016 - Debugging MongoDB Performance
MongoDB
 
PDF
Storing tree structures with MongoDB
Vyacheslav
 
PPTX
Back to Basics: My First MongoDB Application
MongoDB
 
PDF
Map/Confused? A practical approach to Map/Reduce with MongoDB
Uwe Printz
 
PPTX
Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...
MongoDB
 
KEY
MongoDB Java Development - MongoBoston 2010
Eliot Horowitz
 
PDF
MongoDB World 2016: Deciphering .explain() Output
MongoDB
 
PPTX
Mongo db queries
ssuser6d5faa
 
Building Apps with MongoDB
Nate Abele
 
Getting Started with MongoDB and NodeJS
MongoDB
 
Back to Basics Webinar 5: Introduction to the Aggregation Framework
MongoDB
 
Back to Basics Webinar 4: Advanced Indexing, Text and Geospatial Indexes
MongoDB
 
Morphia, Spring Data & Co.
Tobias Trelle
 
Java Persistence Frameworks for MongoDB
Tobias Trelle
 
What do you mean, Backwards Compatibility?
Trisha Gee
 
Webinaire 2 de la série « Retour aux fondamentaux » : Votre première applicat...
MongoDB
 
MongoDB, PHP and the cloud - php cloud summit 2011
Steven Francia
 
Hadoop - MongoDB Webinar June 2014
MongoDB
 
Webinar: Transitioning from SQL to MongoDB
MongoDB
 
MongoDB crud
Darshan Jayarama
 
MongoDB Europe 2016 - Debugging MongoDB Performance
MongoDB
 
Storing tree structures with MongoDB
Vyacheslav
 
Back to Basics: My First MongoDB Application
MongoDB
 
Map/Confused? A practical approach to Map/Reduce with MongoDB
Uwe Printz
 
Benefits of Using MongoDB Over RDBMS (At An Evening with MongoDB Minneapolis ...
MongoDB
 
MongoDB Java Development - MongoBoston 2010
Eliot Horowitz
 
MongoDB World 2016: Deciphering .explain() Output
MongoDB
 
Mongo db queries
ssuser6d5faa
 

Viewers also liked (20)

PPTX
Back to Basics Webinar 1: Introduction to NoSQL
MongoDB
 
PPTX
MongoDB + Spring
Norberto Leite
 
PDF
Introduction to apache kafka
Samuel Kerrien
 
PPTX
Concurrency Control in MongoDB 3.0
MongoDB
 
PPTX
The rise of microservices - containers and orchestration
Andrew Morgan
 
PDF
Comparing ZooKeeper and Consul
Ivan Glushkov
 
PPTX
Real-Time Distributed and Reactive Systems with Apache Kafka and Apache Accumulo
Joe Stein
 
PPTX
Powering Microservices with MongoDB, Docker, Kubernetes & Kafka – MongoDB Eur...
Andrew Morgan
 
PPTX
Hazelcast and MongoDB at Cloud CMS
uzquiano
 
PPT
HighLoad++ 2009 In-Memory Data Grids
Alexey Kharlamov
 
PDF
Async Gateway или Разработка системы распределенных вычислений с нуля
Vitebsk Miniq
 
PDF
Phoenix for Rubyists
Mike North
 
PDF
50 nouvelles choses que l'on peut faire en Java 8
José Paumard
 
PDF
Алексей Николаенков, Devexperts
Nata_Churda
 
PDF
Hazelcast for Terracotta Users
Hazelcast
 
PPTX
Code review at large scale
Mikalai Alimenkou
 
PDF
Amazon cloud – готовим вместе
Vitebsk Miniq
 
PDF
50 new things we can do with Java 8
José Paumard
 
PDF
ЖК Зорге 9
IRCIT.Uspeshnyy
 
PPTX
JFokus 50 new things with java 8
José Paumard
 
Back to Basics Webinar 1: Introduction to NoSQL
MongoDB
 
MongoDB + Spring
Norberto Leite
 
Introduction to apache kafka
Samuel Kerrien
 
Concurrency Control in MongoDB 3.0
MongoDB
 
The rise of microservices - containers and orchestration
Andrew Morgan
 
Comparing ZooKeeper and Consul
Ivan Glushkov
 
Real-Time Distributed and Reactive Systems with Apache Kafka and Apache Accumulo
Joe Stein
 
Powering Microservices with MongoDB, Docker, Kubernetes & Kafka – MongoDB Eur...
Andrew Morgan
 
Hazelcast and MongoDB at Cloud CMS
uzquiano
 
HighLoad++ 2009 In-Memory Data Grids
Alexey Kharlamov
 
Async Gateway или Разработка системы распределенных вычислений с нуля
Vitebsk Miniq
 
Phoenix for Rubyists
Mike North
 
50 nouvelles choses que l'on peut faire en Java 8
José Paumard
 
Алексей Николаенков, Devexperts
Nata_Churda
 
Hazelcast for Terracotta Users
Hazelcast
 
Code review at large scale
Mikalai Alimenkou
 
Amazon cloud – готовим вместе
Vitebsk Miniq
 
50 new things we can do with Java 8
José Paumard
 
ЖК Зорге 9
IRCIT.Uspeshnyy
 
JFokus 50 new things with java 8
José Paumard
 
Ad

Similar to Mongo+java (1) (20)

PPTX
Dev Jumpstart: Build Your First App with MongoDB
MongoDB
 
KEY
CouchDB on Android
Sven Haiges
 
PDF
How to Write Node.js Module
Fred Chien
 
PPTX
Conceptos básicos. Seminario web 2: Su primera aplicación MongoDB
MongoDB
 
PPT
Micro-ORM Introduction - Don't overcomplicate
Kiev ALT.NET
 
PDF
Utilizing Powerful Extensions for Analytics and Operations
Neo4j
 
PDF
Neo4j GraphTour: Utilizing Powerful Extensions for Analytics and Operations
Mark Needham
 
KEY
[Coscup 2012] JavascriptMVC
Alive Kuo
 
PPT
Play!ng with scala
Siarzh Miadzvedzeu
 
PDF
GraphTour - Utilizing Powerful Extensions for Analytics & Operations
Neo4j
 
PDF
Projeto-web-services-Spring-Boot-JPA.pdf
AdrianoSantos888423
 
PPTX
Full Stack Development with Node.js and NoSQL
All Things Open
 
PPTX
Full stack development with node and NoSQL - All Things Open - October 2017
Matthew Groves
 
ODP
This upload requires better support for ODP format
Forest Mars
 
PDF
CouchDB Mobile - From Couch to 5K in 1 Hour
Peter Friese
 
PPTX
Back to Basics, webinar 2: La tua prima applicazione MongoDB
MongoDB
 
PPTX
Webinar: What's new in the .NET Driver
MongoDB
 
PDF
Utilizing Powerful Extensions for Analytics and Operations
Neo4j
 
PDF
My way to clean android - Android day salamanca edition
Christian Panadero
 
PPT
nodejs tutorial foor free download from academia
rani marri
 
Dev Jumpstart: Build Your First App with MongoDB
MongoDB
 
CouchDB on Android
Sven Haiges
 
How to Write Node.js Module
Fred Chien
 
Conceptos básicos. Seminario web 2: Su primera aplicación MongoDB
MongoDB
 
Micro-ORM Introduction - Don't overcomplicate
Kiev ALT.NET
 
Utilizing Powerful Extensions for Analytics and Operations
Neo4j
 
Neo4j GraphTour: Utilizing Powerful Extensions for Analytics and Operations
Mark Needham
 
[Coscup 2012] JavascriptMVC
Alive Kuo
 
Play!ng with scala
Siarzh Miadzvedzeu
 
GraphTour - Utilizing Powerful Extensions for Analytics & Operations
Neo4j
 
Projeto-web-services-Spring-Boot-JPA.pdf
AdrianoSantos888423
 
Full Stack Development with Node.js and NoSQL
All Things Open
 
Full stack development with node and NoSQL - All Things Open - October 2017
Matthew Groves
 
This upload requires better support for ODP format
Forest Mars
 
CouchDB Mobile - From Couch to 5K in 1 Hour
Peter Friese
 
Back to Basics, webinar 2: La tua prima applicazione MongoDB
MongoDB
 
Webinar: What's new in the .NET Driver
MongoDB
 
Utilizing Powerful Extensions for Analytics and Operations
Neo4j
 
My way to clean android - Android day salamanca edition
Christian Panadero
 
nodejs tutorial foor free download from academia
rani marri
 
Ad

More from MongoDB (20)

PDF
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB
 
PDF
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
PDF
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB
 
PDF
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB
 
PDF
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB
 
PDF
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB
 
PDF
MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
PDF
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB
 
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB
 
PDF
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB
 
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB
 
PDF
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB
 
PDF
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB
 
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB
 

Recently uploaded (20)

PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 

Mongo+java (1)

Editor's Notes

  • #28: Replacing objects highly inefficient and should be avoided.