SlideShare a Scribd company logo
Scala with MongoDB
Abdhesh Kumar
Email: abdhesh@knoldus.com
Twitter:@abdheshkumar90
1. What is MongoDB?
2. Why we use MongoDB?
3. What are the MongoDB Terminologies?
4. How to Install and Use MonogDB?
5. What are the Operators of MongoDB?
6. What is Casbah?
7. What is Salat?
Agenda
What is MongoDB?
➢ MongoDB is a document-oriented database management
system designed for performance, horizontal scalability, high
availability,open source NoSQL database(Schemaless or Non-
relational) ,And advanced queryability.
➢ MongoDB is a document-based database system, and as a
result, all records, or data, in MongoDB are documents.
Why we use MongoDB?
Document Oriented
➢ Documents (objects) map nicely to programming language data
types.
➢ Dynamically-typed (schemaless) for easy schema evolution.
➢ No joins and no transactions for high performance and easy
scalability
High Performance
➢ No joins and no transactions makes reads and writes fast
➢ Indexes can include keys from embedded documents and
arrays.
➢ Optional asynchronous writes
.
High Availability
➢Replicated servers with automatic master failover.
Easy Scalability
➢ Automatic sharding distributes collection data across machines.
➢Reads and writes are distributed over shards
Flexibility
➢MongoDB stores data in JSON documents (which we serialize
to BSON).
Indexing
➢ MongoDB supports generic secondary indexes, allowing a
variety of fast queries,and provides unique, compound, and
geospatial indexing capabilities as well.
Fixed-size collections
➢ Capped collections are fixed in size and are useful for certain
types of data, such as logs.
➢ Real time aggregation
➢ Rich query capabilities
➢ Geospatial features
➢ Flexible schema
MongoDB Terminologies
Sql Terms/Concepts MongoDB Terms/Concepts
database database
table collection
index index
row Document or *BSON document
column Field or BSON field
join *Embedding and linking
Primary key _id
Group by aggregation
MongoDB Terms/Concepts
Documents:
➢ The concept of a document: an ordered set of keys with
associated values.
➢ documents are represented as objects:
{"greeting" : "Hello, world!"}
Collections:
➢ A collection is a group of documents.
Embedding:
➢ “Embedding is the nesting of objects and arrays inside a
BSON document”
Linking:
➢ “Links are references between documents”
Aggregation:
➢ The MongoDB aggregation framework provides a means to
calculate aggregated values without having to use map-reduce.
➢ If you’re familiar with SQL, the aggregation framework
provides similar functionality to GROUP BY and related SQL
operators as well as simple forms of “self joins.” Additionally,
the aggregation framework provides projection capabilities to
reshape the returned data.
What is JSON?
➢ JSON (JavaScript Object Notation) is a lightweight data-
interchange format.
➢ JSON is built on two structures:
1. A collection of name/value pairs. ex.object, record, struct,
dictionary, hash table, keyed list, or associative array
2. An ordered list of values. ex. array, vector, list, or sequence
{
"_id" : 1,
"name" : { "first" : "Rohan", "last" : "Singh" },
"contributes" : [ "TypeSafe", "Knoldus" ],
"awards" : [
{
"award" : "Play Framework Expert",
"year" : 2012,
"by" : "TypeSafe"
},
{ "award" : "Scala Expert",
"year" : 2013,
"by" : "Knoldus"
}
]
}
What is BSON?
➢ BSON is a binary-encoded serialization of JSON-like
document.
➢ BSON supports the embedding of documents and arrays
within other documents and arrays.
➢ MongoDB uses BSON as the data storage and network
transfer format for “documets”.
Install MongoDB
$ wget http://downloads.mongodb.org/osx/mongodb-osx-x86_64-
2.0.6.tgz
$ tar -zxvf mongodb-osx-x86_64-2.0.6.tgz
$ sudo mkdir -p /data/db
$ sudo chown `id -u` /data/db
Starting MonDB and Mongo Shell
➢ $ ./bin/mongod
➢ $ mongo
MongoDB shell version: 2.4.1
connecting to: test
>
MongoDB Operators
Query Selectors:
➢ Comparison
$all, $gt, $gte, $in, $lt, $lte, $ne, $nin
➢ Logical
$and, $or, $nor, $not
➢ Element
$exists, $mod, $type
➢ JavaScript
$regix, $where
➢ Array
$elemMatch,$size
Update
➢ Fields
$inc, $set, $unset
➢ Array
$, $addToSet, $pop, $pullAll, $pull, $pushAll, $push
Projection
$, $elemMatch, $slice
What is the Casbah?
➢ Casbah is a Scala toolkit for MongoDB—We use the term “toolkit” rather
than “driver”, as Casbah integrates a layer on top of the official mongo-java-
driver for better integration with Scala.
Installing & Setting up Casbah
*You should have MongoDB setup and running on your machine.
Add casbah dependencies to buid.sbt
resolvers += "Scala-tools" at
"https://oss.sonatype.org/content/groups/scala-tools"
resolvers += "Sonatype Snapshot" at
"https://oss.sonatype.org/content/repositories/releases"
libraryDependencies ++= Seq(
"org.mongodb" % "casbah_2.10" % "2.5.1"
)
Use Casbah with Scala
➢ Import the Driver
import com.mongodb.casbah.Imports._
➢ Connecting to MongoDB
Connect to default - localhost, 27017
val mongoConnection = MongoConnection()
connect to "mongodb01" host, default port
val mongoConnection = MongoConnection("mongodb01")
connect to "mongodb02" host, port 42017
val mongoConnection = MongoConnection("mongodb02", 42017)
val mongoDB = mongoConnection("casbah_test")
Connect casbah_test database with test_data collecion by chaining
val mongoColl = mongoConnection("casbah_test")("test_data")
Working with Collections
What is Salat?
➢ Salat is a bi-directional Scala case class serialization library.
➢ Salat provides fast, reliable bi-directional serialization between
Scala case classes and MongoDB's DBObject format.
➢ case classes can be used directly for storing document by
simply declaring a DAO and with the help of some annotations
Salat DAO
SalatDAOmakes it simple to start working with your case class objects.
Use it as is or as the basis for your own DAO implementation.
By extending SalatDAO, you can do the following out of box:
➢ insert and get back an Option with the id
➢ findOne and get back an Option
➢ typed to your case class
➢ find and get back a Mongo cursor typed to your class
➢ iterate, limit, skip and sort
➢ update with a query and a case class
➢ save and remove case classes
➢ Projections
➢ built-in support for child collections
What Scala types can Salat handle?
➢ case classes
➢ embedded case classes
➢ embedded case classes typed to a trait or abstract superclass annotated
with @Salat
➢ Scala enums
➢ Options
➢ Collections
Collections
➢ Maps are represented as DBObject ; all other collections turn into DBList .
Salat collection support
Salat 0.0.8-SNAPSHOT and above support the following mutable and
immutable collections:
➢ Map
➢ Lists and linked lists
➢ Seqs and indexed seqs
➢ Set
➢ Buffer
➢ Vector
Salat Unsupported types
Salat can't support any of these types right now:
➢ Nested inner classes
➢ A class typed at the top-level to a trait or an abstract superclass
Salat can't support these types because the mongo-java-driver doesn't support
Them:
➢ Any type of Map whose key is not a String
➢ any type of map whose key is a String containing . or $
Salat Supports Annotations
Salat offers the following annotations to customize serialization
behavior:
➢ @Salat to support polymorphic instances of a trait or abstract
superclass
➢ @Key to change the name of a field
➢ @Persist to serialize a value outside the case class constructor
➢ @Ignore to ignore a field in the case class constructor
➢ @EnumAs to customize the behavior of a particular enum
Salat Grater
Grater
Salat as the notion of Grater that is responsible to the de/serialization
of a case class.
This through two simple functions, let have a Grater for the type T:
➢ asDBObject(t:T) : returns a MongoDB representation of t
➢ asObject(dbo:DBObject)[T] : returns a T instance based on the
provided
Mo ngoDB content
Installing & Setting up Salat
Add salat dependencies to buid.sbt
resolvers += "Novus Release Repository" at "http://repo.novus.com/releases/"
resolvers += "Sonatype OSS Snapshots" at "
https://oss.sonatype.org/content/repositories/snapshots"
libraryDependencies ++= Seq(
"com.novus" %% "salat" % "1.9.2-SNAPSHOT"
)
References
http://docs.mongodb.org/manual/

More Related Content

What's hot (20)

PPTX
Mongo db
Raghu nath
 
PDF
Introduction to MongoDB
Justin Smestad
 
PPTX
An Introduction To NoSQL & MongoDB
Lee Theobald
 
PPTX
MongoDB basics & Introduction
Jerwin Roy
 
PPTX
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
MongoDB
 
PDF
Elastic Search
Lukas Vlcek
 
PDF
Introduction to MongoDB
Mike Dirolf
 
PPTX
Mongo db operations_v2
Thanabalan Sathneeganandan
 
PPTX
Conceptos básicos. Seminario web 2: Su primera aplicación MongoDB
MongoDB
 
PPTX
MongoDB 101
Abhijeet Vaikar
 
PPTX
Intro To Mongo Db
chriskite
 
PPTX
Ajax xml json
Andrii Siusko
 
PPTX
Introduction to mongo db
NexThoughts Technologies
 
PPTX
Using Webservice in iOS
Mahboob Nur
 
PPT
Web Services with Objective-C
Juio Barros
 
PPTX
Basics of MongoDB
HabileLabs
 
PPTX
Introduction to JSON & AJAX
Collaboration Technologies
 
PPTX
Mongo DB
Pradeep Shanmugam
 
PDF
mobile in the cloud with diamonds. improved.
Oleg Shanyuk
 
PDF
Apache Any23 - Anything to Triples
Michele Mostarda
 
Mongo db
Raghu nath
 
Introduction to MongoDB
Justin Smestad
 
An Introduction To NoSQL & MongoDB
Lee Theobald
 
MongoDB basics & Introduction
Jerwin Roy
 
Conceptos básicos. seminario web 3 : Diseño de esquema pensado para documentos
MongoDB
 
Elastic Search
Lukas Vlcek
 
Introduction to MongoDB
Mike Dirolf
 
Mongo db operations_v2
Thanabalan Sathneeganandan
 
Conceptos básicos. Seminario web 2: Su primera aplicación MongoDB
MongoDB
 
MongoDB 101
Abhijeet Vaikar
 
Intro To Mongo Db
chriskite
 
Ajax xml json
Andrii Siusko
 
Introduction to mongo db
NexThoughts Technologies
 
Using Webservice in iOS
Mahboob Nur
 
Web Services with Objective-C
Juio Barros
 
Basics of MongoDB
HabileLabs
 
Introduction to JSON & AJAX
Collaboration Technologies
 
mobile in the cloud with diamonds. improved.
Oleg Shanyuk
 
Apache Any23 - Anything to Triples
Michele Mostarda
 

Similar to Scala with MongoDB (20)

PPT
Mongo Bb - NoSQL tutorial
Mohan Rathour
 
PPTX
Big data technology unit 3
RojaT4
 
PPTX
Mongodb - NoSql Database
Prashant Gupta
 
PPTX
Rails meets no sql
Simon Escobar Benitez
 
PPTX
Mongo db
Gyanendra Yadav
 
PPTX
NOSQL and MongoDB Database
Tariqul islam
 
PPTX
Introduction to mongodb
Mohammed Ragab
 
PDF
Mongo db transcript
foliba
 
PPTX
MongoDB
fsbrooke
 
PPTX
Kalp Corporate MongoDB Tutorials
Kalp Corporate
 
PPTX
Klevis Mino: MongoDB
Carlo Vaccari
 
PPTX
Azure SQL & SQL Server 2016 JSON
Davide Mauri
 
PDF
Mongo presentation conf
Shridhar Joshi
 
PPTX
Chjkkkkkkkkkkkkkkkkkjjjjjjjjjjjjjjjjjjjjjjjjjj01_The Basics.pptx
MhmdMk10
 
PPTX
Introduction to Cosmos DB Presentation.pptx
Knoldus Inc.
 
PDF
Software development - the java perspective
Alin Pandichi
 
PDF
ElasticSearch: Distributed Multitenant NoSQL Datastore and Search Engine
Daniel N
 
PPTX
No SQL - MongoDB
Mirza Asif
 
PPTX
MongoDB.pptx
Sigit52
 
PDF
No sql databases
Walaa Hamdy Assy
 
Mongo Bb - NoSQL tutorial
Mohan Rathour
 
Big data technology unit 3
RojaT4
 
Mongodb - NoSql Database
Prashant Gupta
 
Rails meets no sql
Simon Escobar Benitez
 
Mongo db
Gyanendra Yadav
 
NOSQL and MongoDB Database
Tariqul islam
 
Introduction to mongodb
Mohammed Ragab
 
Mongo db transcript
foliba
 
MongoDB
fsbrooke
 
Kalp Corporate MongoDB Tutorials
Kalp Corporate
 
Klevis Mino: MongoDB
Carlo Vaccari
 
Azure SQL & SQL Server 2016 JSON
Davide Mauri
 
Mongo presentation conf
Shridhar Joshi
 
Chjkkkkkkkkkkkkkkkkkjjjjjjjjjjjjjjjjjjjjjjjjjj01_The Basics.pptx
MhmdMk10
 
Introduction to Cosmos DB Presentation.pptx
Knoldus Inc.
 
Software development - the java perspective
Alin Pandichi
 
ElasticSearch: Distributed Multitenant NoSQL Datastore and Search Engine
Daniel N
 
No SQL - MongoDB
Mirza Asif
 
MongoDB.pptx
Sigit52
 
No sql databases
Walaa Hamdy Assy
 
Ad

Recently uploaded (20)

PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Digital Circuits, important subject in CS
contactparinay1
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Ad

Scala with MongoDB

  • 1. Scala with MongoDB Abdhesh Kumar Email: [email protected] Twitter:@abdheshkumar90
  • 2. 1. What is MongoDB? 2. Why we use MongoDB? 3. What are the MongoDB Terminologies? 4. How to Install and Use MonogDB? 5. What are the Operators of MongoDB? 6. What is Casbah? 7. What is Salat? Agenda
  • 3. What is MongoDB? ➢ MongoDB is a document-oriented database management system designed for performance, horizontal scalability, high availability,open source NoSQL database(Schemaless or Non- relational) ,And advanced queryability. ➢ MongoDB is a document-based database system, and as a result, all records, or data, in MongoDB are documents.
  • 4. Why we use MongoDB? Document Oriented ➢ Documents (objects) map nicely to programming language data types. ➢ Dynamically-typed (schemaless) for easy schema evolution. ➢ No joins and no transactions for high performance and easy scalability High Performance ➢ No joins and no transactions makes reads and writes fast ➢ Indexes can include keys from embedded documents and arrays. ➢ Optional asynchronous writes .
  • 5. High Availability ➢Replicated servers with automatic master failover. Easy Scalability ➢ Automatic sharding distributes collection data across machines. ➢Reads and writes are distributed over shards Flexibility ➢MongoDB stores data in JSON documents (which we serialize to BSON).
  • 6. Indexing ➢ MongoDB supports generic secondary indexes, allowing a variety of fast queries,and provides unique, compound, and geospatial indexing capabilities as well. Fixed-size collections ➢ Capped collections are fixed in size and are useful for certain types of data, such as logs. ➢ Real time aggregation ➢ Rich query capabilities ➢ Geospatial features ➢ Flexible schema
  • 7. MongoDB Terminologies Sql Terms/Concepts MongoDB Terms/Concepts database database table collection index index row Document or *BSON document column Field or BSON field join *Embedding and linking Primary key _id Group by aggregation
  • 8. MongoDB Terms/Concepts Documents: ➢ The concept of a document: an ordered set of keys with associated values. ➢ documents are represented as objects: {"greeting" : "Hello, world!"} Collections: ➢ A collection is a group of documents.
  • 9. Embedding: ➢ “Embedding is the nesting of objects and arrays inside a BSON document” Linking: ➢ “Links are references between documents” Aggregation: ➢ The MongoDB aggregation framework provides a means to calculate aggregated values without having to use map-reduce. ➢ If you’re familiar with SQL, the aggregation framework provides similar functionality to GROUP BY and related SQL operators as well as simple forms of “self joins.” Additionally, the aggregation framework provides projection capabilities to reshape the returned data.
  • 10. What is JSON? ➢ JSON (JavaScript Object Notation) is a lightweight data- interchange format. ➢ JSON is built on two structures: 1. A collection of name/value pairs. ex.object, record, struct, dictionary, hash table, keyed list, or associative array 2. An ordered list of values. ex. array, vector, list, or sequence
  • 11. { "_id" : 1, "name" : { "first" : "Rohan", "last" : "Singh" }, "contributes" : [ "TypeSafe", "Knoldus" ], "awards" : [ { "award" : "Play Framework Expert", "year" : 2012, "by" : "TypeSafe" }, { "award" : "Scala Expert", "year" : 2013, "by" : "Knoldus" } ] }
  • 12. What is BSON? ➢ BSON is a binary-encoded serialization of JSON-like document. ➢ BSON supports the embedding of documents and arrays within other documents and arrays. ➢ MongoDB uses BSON as the data storage and network transfer format for “documets”.
  • 13. Install MongoDB $ wget http://downloads.mongodb.org/osx/mongodb-osx-x86_64- 2.0.6.tgz $ tar -zxvf mongodb-osx-x86_64-2.0.6.tgz $ sudo mkdir -p /data/db $ sudo chown `id -u` /data/db
  • 14. Starting MonDB and Mongo Shell ➢ $ ./bin/mongod ➢ $ mongo MongoDB shell version: 2.4.1 connecting to: test >
  • 15. MongoDB Operators Query Selectors: ➢ Comparison $all, $gt, $gte, $in, $lt, $lte, $ne, $nin ➢ Logical $and, $or, $nor, $not ➢ Element $exists, $mod, $type ➢ JavaScript $regix, $where
  • 16. ➢ Array $elemMatch,$size Update ➢ Fields $inc, $set, $unset ➢ Array $, $addToSet, $pop, $pullAll, $pull, $pushAll, $push Projection $, $elemMatch, $slice
  • 17. What is the Casbah? ➢ Casbah is a Scala toolkit for MongoDB—We use the term “toolkit” rather than “driver”, as Casbah integrates a layer on top of the official mongo-java- driver for better integration with Scala.
  • 18. Installing & Setting up Casbah *You should have MongoDB setup and running on your machine. Add casbah dependencies to buid.sbt resolvers += "Scala-tools" at "https://oss.sonatype.org/content/groups/scala-tools" resolvers += "Sonatype Snapshot" at "https://oss.sonatype.org/content/repositories/releases" libraryDependencies ++= Seq( "org.mongodb" % "casbah_2.10" % "2.5.1" )
  • 19. Use Casbah with Scala ➢ Import the Driver import com.mongodb.casbah.Imports._ ➢ Connecting to MongoDB Connect to default - localhost, 27017 val mongoConnection = MongoConnection() connect to "mongodb01" host, default port val mongoConnection = MongoConnection("mongodb01") connect to "mongodb02" host, port 42017 val mongoConnection = MongoConnection("mongodb02", 42017)
  • 20. val mongoDB = mongoConnection("casbah_test") Connect casbah_test database with test_data collecion by chaining val mongoColl = mongoConnection("casbah_test")("test_data") Working with Collections
  • 21. What is Salat? ➢ Salat is a bi-directional Scala case class serialization library. ➢ Salat provides fast, reliable bi-directional serialization between Scala case classes and MongoDB's DBObject format. ➢ case classes can be used directly for storing document by simply declaring a DAO and with the help of some annotations
  • 22. Salat DAO SalatDAOmakes it simple to start working with your case class objects. Use it as is or as the basis for your own DAO implementation. By extending SalatDAO, you can do the following out of box: ➢ insert and get back an Option with the id ➢ findOne and get back an Option ➢ typed to your case class ➢ find and get back a Mongo cursor typed to your class ➢ iterate, limit, skip and sort ➢ update with a query and a case class ➢ save and remove case classes ➢ Projections ➢ built-in support for child collections
  • 23. What Scala types can Salat handle? ➢ case classes ➢ embedded case classes ➢ embedded case classes typed to a trait or abstract superclass annotated with @Salat ➢ Scala enums ➢ Options ➢ Collections Collections ➢ Maps are represented as DBObject ; all other collections turn into DBList .
  • 24. Salat collection support Salat 0.0.8-SNAPSHOT and above support the following mutable and immutable collections: ➢ Map ➢ Lists and linked lists ➢ Seqs and indexed seqs ➢ Set ➢ Buffer ➢ Vector
  • 25. Salat Unsupported types Salat can't support any of these types right now: ➢ Nested inner classes ➢ A class typed at the top-level to a trait or an abstract superclass Salat can't support these types because the mongo-java-driver doesn't support Them: ➢ Any type of Map whose key is not a String ➢ any type of map whose key is a String containing . or $
  • 26. Salat Supports Annotations Salat offers the following annotations to customize serialization behavior: ➢ @Salat to support polymorphic instances of a trait or abstract superclass ➢ @Key to change the name of a field ➢ @Persist to serialize a value outside the case class constructor ➢ @Ignore to ignore a field in the case class constructor ➢ @EnumAs to customize the behavior of a particular enum
  • 27. Salat Grater Grater Salat as the notion of Grater that is responsible to the de/serialization of a case class. This through two simple functions, let have a Grater for the type T: ➢ asDBObject(t:T) : returns a MongoDB representation of t ➢ asObject(dbo:DBObject)[T] : returns a T instance based on the provided Mo ngoDB content
  • 28. Installing & Setting up Salat Add salat dependencies to buid.sbt resolvers += "Novus Release Repository" at "http://repo.novus.com/releases/" resolvers += "Sonatype OSS Snapshots" at " https://oss.sonatype.org/content/repositories/snapshots" libraryDependencies ++= Seq( "com.novus" %% "salat" % "1.9.2-SNAPSHOT" )