Skip to content

Erudika/para-dao-mongodb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

MongoDB DAO plugin for Para

Build Status Maven Central Join the chat at https://gitter.im/Erudika/para

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

Documentation

Getting started

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

<dependency>
  <groupId>com.erudika</groupId>
  <artifactId>para-dao-mongodb</artifactId>
  <version>{see_green_version_badge_above}</version>
</dependency>

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.

Configuration

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"

para.mongodb.host = "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}:

"$field.name" => "Base64:field_name:JGZpZWxkLm5hbWU="

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

Dependencies

Author

Luca Venturella

License

Apache 2.0