Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


MongoDB DAO plugin for Para

Build Status Maven Central Join the chat at

What is this?

Para was designed as a simple and modular back-end framework for object persistence and retrieval. It enables your application to store objects directly to a data store (NoSQL) or any relational database (RDBMS) and it also automatically indexes those objects and makes them searchable.

This plugin allows Para to store data in a MongoDB database. It is compatible with the these MongoDB flavors:

  • MongoDB Community Server
  • MongoDB Enterprise Server
  • MongoDB Atlas Cloud
  • Azure Cosmos DB API for MongoDB


Read the Docs

Getting started

The plugin is on Maven Central. Here's the Maven snippet to include in your pom.xml:


Alternatively you can download the JAR from the "Releases" tab above put it in a lib folder alongside the server WAR file para-x.y.z.war. Para will look for plugins inside lib and pick up the MongoDB plugin.


Here are all the configuration properties for this plugin (these go inside your application.conf):

# setting the URI will override host, port, database, user, password below
# URI is left blank by default
para.mongodb.uri = ""
# para.mongodb.uri = "mongodb://user:pass@localhost:27017,localhost:37017/MyApp" = "localhost"
para.mongodb.port = 27017
para.mongodb.database = "MyApp"
para.mongodb.user = "user"
para.mongodb.password = "pass"
para.mongodb.ssl_enabled = false
para.mongodb.ssl_allow_all = false

You have the option to set either the server URI as a string (e.g. mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]) or set the host and port combination for a single server instance. The first option allows you to specify multiple server hosts. If the URI has a non-blank value in the configuration file, it will override host, port, user and password settings. For details about the server URI syntax, read the docs for MongoClientURI.

Finally, set the config property:

para.dao = "MongoDBDAO"

This could be a Java system property or part of a application.conf file on the classpath. This tells Para to use the MongoDB Data Access Object (DAO) implementation instead of the default.

Field name limitation

Mongo enforces a restriction on all field names and does not allow $ and . characters in field names. This plugin tries to avoid this by encoding such fields in Base64, following the pattern Base64:{fieldName}:{encodedFieldName}:

"$" => "Base64:field_name:JGZpZWxkLm5hbWU="

The restricted characters are stripped and . is replaced with _.



Luca Venturella


Apache 2.0