mongodb driver
MongoDB driver for Jooby.
exports
dependency
<dependency>
<groupId>org.jooby</groupId>
<artifactId>jooby-mongodb</artifactId>
<version>1.6.6</version>
</dependency>
usage
application.conf:
db = "mongodb://localhost/mydb"
{
use(new Mongodb());
get("/", req -> {
MongoClient client = require(MongoClient.class);
// work with client
MongoDatabase = require(MongoDatabase.class);
// work with mydb
});
}
Default URI connection property is db
but of course you can use any other name:
application.conf:
mydb = "mongodb://localhost/mydb"
{
use(new Mongodb("mydb"));
get("/", req -> {
MongoDatabase mydb = require(MongoDatabase.class);
// work with mydb
});
}
options
Options can be set via .conf
file:
mongodb.connectionsPerHost = 100
or programmatically:
{
use(new Mongodb()
.options((options, config) -> {
options.connectionsPerHost(100);
})
);
}
connection URI
Default connection URI is defined by the db
property. Mongodb URI looks like:
db = mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database[.collection]][?options]]
For more detailed information please check: MongoClientURI.
two or more connections
Use named when you need two or more mongodb
connections:
{
use(new Mongodb("db1"));
use(new Mongodb("db2"));
get("/", req -> {
MongoClient client1 = require("db1", MongoClient.class);
// work with db1
MongoClient client2 = require("db2", MongoClient.class);
// work with db2
});
}
mongodb session store
dependency
<dependency>
<groupId>org.jooby</groupId>
<artifactId>jooby-mongodb</artifactId>
<version>1.6.6</version>
</dependency>
usage
{
use(new Mongodb());
session(MongoSessionStore.class);
get("/", req -> {
req.session().set("name", "jooby");
});
}
The name
attribute and value will be stored in a MongoDB.
options
timeout
By default, a mongodb session will expire after 30 minutes
. Changing the default timeout is as simple as:
# 8 hours
session.timeout = 8h
# 15 seconds
session.timeout = 15
# 120 minutes
session.timeout = 120m
# no timeout
session.timeout = -1
It uses MongoDB’s TTL collection feature (2.2+) to have mongod
automatically remove expired sessions.
session collection
Default MongoDB collection is sessions
.
It’s possible to change the default key setting the mongodb.sesssion.collection
properties.
mongodb.conf
These are the default properties for mongodb:
###################################################################################################
# mongodb
###################################################################################################
mongodb.connectionsPerHost = 100
mongodb.threadsAllowedToBlockForConnectionMultiplier = 5
mongodb.maxWaitTime = 120s
mongodb.connectTimeout = 10s
mongodb.socketTimeout = 0
mongodb.socketKeepAlive = false
mongodb.cursorFinalizerEnabled = true
mongodb.alwaysUseMBeans = false
mongodb.heartbeatFrequency = 5000
mongodb.minHeartbeatFrequency = 500
mongodb.heartbeatConnectTimeout = 20s
mongodb.heartbeatSocketTimeout = 20s
###################################################################################################
# session datastore
# collection: sessions
# timeout: 30m
###################################################################################################
mongodb.session.collection = sessions