SlideShare une entreprise Scribd logo
1  sur  71
Télécharger pour lire hors ligne
Getting Started with
MongoDB
Capital District Java Developers Network
January 16, 2014

Michael P. Redlich
@mpredli
about.me/mpredli/
1
Friday, January 17, 14

1
Who’s Mike?
• BS in CS from Rutgers University
• “Petrochemical Research Organization”
• Ai-Logix, Inc. (now AudioCodes)
• Amateur Computer Group of New Jersey
• Publications
• Presentations
2
Friday, January 17, 14

2
Upcoming Events
• Trenton Computer Festival
• March 14-15, 2014
• tcf-nj.org
• Emerging Technologies for the Enterprise
• April 22-23, 2014
• phillyemergingtech.com
3
Friday, January 17, 14

3
Upcoming Events

4
Friday, January 17, 14

4
Objectives
• What is MongoDB?
• What is NoSQL?
• Getting Started with MongoDB
• Basic CRUD Operations
• Live Demos (yea!)
• MongoDB Resources
5
Friday, January 17, 14

5
What is MongoDB? (1)
• “...an open-source document database that

provides high performance, high availability, and
automatic scaling.”

MongoDB Web Site, http://www.mongodb.org/

• It’s name derived from “humongous”
• Written in C++
6
Friday, January 17, 14

6
What is MongoDB? (2)
• “...an open-source database used by

companies of all sizes, across all industries and
for a wide variety of applications. It is an agile
database that allows schemas to change
quickly as applications evolve, while still
providing functionality developers expect from
traditional databases...”

MongoDB Products Web Site, http://www.mongodb.com/products/mongodb/

7
Friday, January 17, 14

7
What is NoSQL?
• Developed to address shortcomings of a

traditional SQL relational database, namely:

• big data
• frequency of access to big data
• performance and scalability
8
Friday, January 17, 14

8
How is MongoDB
Used?

9
Friday, January 17, 14

9
Who is Using
MongoDB?

10
Friday, January 17, 14

10
Features of MongoDB
•

•
•
•
•

Document-Oriented
Storage

•
•

Full Index Support

•
•

Auto-Sharding

Replication and High
Availability

Fast In-Place Updates
Map/Reduce
GridFS
Professional Support by
MongoDB

Querying

11
Friday, January 17, 14

11
Nomenclature (1)
RDBMS

MongoDB

Database

Database

Table

Collection

Row

Document

Index

Index

Join

Embedding & Linking

Foreign Key

Reference
12

Friday, January 17, 14

12
Nomenclature (2)

13
Friday, January 17, 14

13
What is a Document?
• Basic unit of data
• analogous to a row in a RDBMS
• An ordered set of fields (keys) with

associated values stored in BSON format

• similar to JSON
14
Friday, January 17, 14

14
What is BSON?
• “...a binary-encoded serialization of JSON-like
documents.”

BSON Web Site, http://www.bsonspec.org/

• Binary JSON
• Designed to be lightweight, traversable, and
efficient

15
Friday, January 17, 14

15
What is a Collection?
• A group of documents
• analogous to a table in a RDBMS
• Schema-less
16
Friday, January 17, 14

16
Advantages of
Documents
• Documents correspond to native data
types in many programming languages

• Embedded documents and arrays reduce
the need for expensive joins

• Dynamic schema support fluent
polymorphism

17
Friday, January 17, 14

17
Document Structure
{

embedded document

lastName : “Redlich”,
firstName : “Michael”,
email : “mike@redlich.net”
role : {
officer : “President”,

field

sig : “Java Users Group”

value

}
}

18
Friday, January 17, 14

18
Field Names
• Strings
• Cannot contain:
• null
• dots (.)
• dollar sign ($)
• No duplicate field names
19
Friday, January 17, 14

19
Conventions
• Command Prompt ($)
• MySQL prompt (mysql>)
• MongoDB prompt (>)
• Keywords (db, find(), etc.)
• Variables (variable)
20
Friday, January 17, 14

20
Example Database
• ACGNJ Board of Directors:
• lastName
• firstName
• roles (embedded documents)
• tenure
21
Friday, January 17, 14

21
Getting Started
• Download MongoDB
• Create a default data directory
•/data/db
•C:datadb
• Create your first MongoDB database
22
Friday, January 17, 14

22
Starting MongoDB
• Start an instance of the MongoDB server:
$ mongod

• Start an instance of the MongoDB client (a
JavaScript-based shell):

$ mongo

23
Friday, January 17, 14

23
Mongo Shell (1)
• Show the list of shell commands:
> help

• Show the list of databases:
> show dbs

• Show the current database:
> db

24
Friday, January 17, 14

24
Mongo Shell (2)
• Specify the database to use or create:
> use database

• Show the collections within the current
database:

> show collections

• Show the users within the database:
> show users
25
Friday, January 17, 14

25
Mongo Shell (3)
• Show the recent system.profile
entries:

> show profile

• Tab completion
• Command history
26
Friday, January 17, 14

26
Primary Key
• Denoted by a special field, _id
• It can be generated:
• Implicitly:
{_id : ObjectID(value)}
•
• Explicitly:
• {_id : 2 }, { _id : “MPR”}
27
Friday, January 17, 14

27
ObjectIDs
• Default type for _id
• A 12-byte hexadecimal BSON type:

28
Friday, January 17, 14

28
Live Demo!

29
Friday, January 17, 14

29
Create

30
Friday, January 17, 14

30
Create a Database
• Create a database in MySQL:
mysql> CREATE DATABASE database;

• Create a database in MongoDB:
> use database

31
Friday, January 17, 14

31
Create a Collection
• Create a new table in MySQL:
mysql> CREATE TABLE table(column
datatype,...);

• Create a new collection in MongoDB:
>
db.collection.insert({field:value,.
..})

32
Friday, January 17, 14

32
Insert Data
• Insert a row in MySQL:
> INSERT INTO table(column,...)
VALUES(value,...);

• Insert a document in MongoDB:
>
db.collection.insert({field:value,.
..})

33
Friday, January 17, 14

33
Insert Data with Loops
• Insert multiple documents with an array:
> for(int i = 0;i < j;++i)
db.collection.insert({field:array[i
]});

• Insert multiple documents with variable:
> for(int i = 0;i < j;++i)
db.collection.insert({field:i})

34
Friday, January 17, 14

34
Live Demo!

35
Friday, January 17, 14

35
Read

36
Friday, January 17, 14

36
Query (1)
• Retrieve all rows in MySQL:
mysql> SELECT * FROM table;

• Retrieve all documents in MongoDB:
> db.collection.find()

37
Friday, January 17, 14

37
Query (2)
• Retrieve specified columns in MySQL:
mysql> SELECT column1,column2 FROM
table;

• Retrieve specified fields in MongoDB:
> db.collection.find({},
{field1:true,field2:true})

38
Friday, January 17, 14

38
Query (3)
• Retrieve specific rows in MySQL:
mysql> SELECT * FROM table WHERE
column = value;

• Retrieve specific documents in MongoDB:
> db.collection.find({field:value})

39
Friday, January 17, 14

39
Query (4)
• Retrieve specific rows in MySQL:
mysql> SELECT * FROM table WHERE
column = value ORDER BY value ASC;

• Retrieve specific documents in MongoDB:
>
db.collection.find({field:value}).s
ort({field:1})

40
Friday, January 17, 14

40
Query (5)
• Query for multiple documents (returns a
cursor):

> db.collection.find()

• Query for one document (returns a single
document):

> db.collection.findOne()

41
Friday, January 17, 14

41
Query Selectors
• Scalar:
• $ne, $mod, $exists, $type, $lt,
$lte, $gt, $gte

• Vector:
• $in, $nin, $all, $size
42
Friday, January 17, 14

42
Query (6)
• Retrieve specific rows in MySQL:
mysql> SELECT * FROM table WHERE
column != value;

• Retrieve specific documents in MongoDB:
> db.collection.find({field:
{$ne:value}})

43
Friday, January 17, 14

43
Query (7)
• Retrieve specific rows in MySQL:
mysql> SELECT * FROM table WHERE
column1 = value OR column2 = value;

• Retrieve specific documents in MongoDB:
> db.collection.find({$or:
[{field:value},{field:value}])

44
Friday, January 17, 14

44
Query (8)
> db.members.aggregate({$project:
{officer:"$roles.officer"}})

> db.members.find({tenure:
{$gt:ISODate("2014-12-31")}})

> db.members.find({"roles.officer":
{$exists:true}}).sort({"roles.offic
er":1})

45
Friday, January 17, 14

45
Query (9)
>
db.members.find({"roles.director":
{$all:["Director"]}})

>
db.members.find({"roles.committee":
{$in:["Historian","Newsletter"]}})

> db.members.find({roles:{$size:
3}})

46
Friday, January 17, 14

46
Live Demo!

47
Friday, January 17, 14

47
Update

48
Friday, January 17, 14

48
Update (1)
• Update a row in MySQL:
mysql> UPDATE table SET column =
value WHERE id = id;

• Update a document in a MongoDB:
> db.collection.update({_id:value},
{$set:{field:value}},{multi:true})

49
Friday, January 17, 14

49
Update (2)
• Update a row in MySQL:
mysql> UPDATE table SET column1 =
value WHERE column2 > value;

• Update a document in MongoDB:
> db.collection.update({field1:
{$gt:value}},{$set:{field2:value}},
{multi:true})

50
Friday, January 17, 14

50
Update (3)
• Update a document using findOne():
> redlich =
db.members.findOne({lastName:
"Redlich"})
> redlich.roles = [{sig:"Java Users
Group"}]
> db.members.update({lastName:
"Redlich"},redlich)
51
Friday, January 17, 14

51
Atomic Update
Operators
• Scalar:
• $inc, $set, $unset
• Vector:
• $push, $pop, $pull, $pushAll,
$pullAll, $addToSet

52
Friday, January 17, 14

52
Update (4)
> db.members.update({lastName:
"Redlich"},{$set:
{"ISODate("2016-12-31")}})

> db.members.update({"roles.sig"},
{$set:{"roles.sig":"JUG"}})

53
Friday, January 17, 14

53
Delete

54
Friday, January 17, 14

54
Delete (1)
• Delete all rows in MySQL:
mysql> DELETE FROM table;

• Delete all documents in MongoDB:
> db.collection.remove()

55
Friday, January 17, 14

55
Delete (2)
• Delete specific rows in MySQL:
mysql> DELETE FROM table WHERE
column = value;

• Delete specific documents in MongoDB:
>
db.collection.remove({field:value})

56
Friday, January 17, 14

56
Delete (2)
• Delete a MySQL database
mysql> DROP DATABASE database;

• Delete a MongoDB database
> use database
> db.dropDatabase()

57
Friday, January 17, 14

57
Backup/Restore

58
Friday, January 17, 14

58
Export (1)
• Export a collection to a JSON file
• Ensure mongod is running
$ mongoexport --db database -collection collection --out path/
filename.json

59
Friday, January 17, 14

59
Export (2)
• Export a collection to a CSV file
• Ensure mongod is running
• A list of fields is required
$ mongoexport --db database -collection collection --fields
field1,field2,... --csv --out path/
filename.json

60
Friday, January 17, 14

60
Import
• Import a collection from a JSON, CSV, or
TSV file

• Ensure mongod is running
$ mongoimport --db database -collection collection < path/
filename.json

61
Friday, January 17, 14

61
Dump
• Dump a specified MySQL database:
$ mysqldump -u root --opt database
> path.filename.sql

• Dump all MongoDB databases:
• Ensure mongod is not running
$ mongodump --dbpath /data/db --out
path
62
Friday, January 17, 14

62
Live Demo!

63
Friday, January 17, 14

63
Package Components
(1)
• Core Processes
• mongod - core DB process
• mongos - controller & query router
(sharding)

• mongo - interactive JavaScript-based
shell

64
Friday, January 17, 14

64
Package Components
(2)
• Binary Import and Export
• mongodump - creates BSON dump files
• mongorestore - restores BSON dump
files

• bsondump - converts BSON to JSON
• mongooplog - streams oplog entries
65
Friday, January 17, 14

65
Package Components
(3)
• Data Import and Export
• mongoimport - imports JSON, CSV, or
TSV data formats

• mongoexport - exports to JSON, CSV,
or TSV data formats

66
Friday, January 17, 14

66
Package Components
(4)

• Diagnostic Tools
• mongostat - captures database

operations by type (insert, query, etc.)

• mongotop - tracks read/write activity
• mongosniff - provides tracing/sniffing
view into database activity

• mongoperf - performance testing tool
67
Friday, January 17, 14

67
Package Components
(5)
• GridFS
• mongofiles - provides a commandline interaction to a GridFS storage
system

68
Friday, January 17, 14

68
MongoDB Resources
(1)

69
Friday, January 17, 14

69
MongoDB Resources
(2)

• mongodb.org
• docs.mongodb.org
• mongodb.org/books
• mongodb.com/products/mongodb
• mongodb.com/reference
• bsonspec.org
• education.mongodb.com
70
Friday, January 17, 14

70
Thanks!
mike@redlich.net
@mpredli
javasig.org

71
Friday, January 17, 14

71

Contenu connexe

Tendances

Debugging and Testing ES Systems
Debugging and Testing ES SystemsDebugging and Testing ES Systems
Debugging and Testing ES Systems
Chris Birchall
 
CouchDB Open Source Bridge
CouchDB Open Source BridgeCouchDB Open Source Bridge
CouchDB Open Source Bridge
Chris Anderson
 

Tendances (20)

Node.js - As a networking tool
Node.js - As a networking toolNode.js - As a networking tool
Node.js - As a networking tool
 
Node.js - A practical introduction (v2)
Node.js  - A practical introduction (v2)Node.js  - A practical introduction (v2)
Node.js - A practical introduction (v2)
 
Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?Nodejs - Should Ruby Developers Care?
Nodejs - Should Ruby Developers Care?
 
Nodejs - A quick tour (v5)
Nodejs - A quick tour (v5)Nodejs - A quick tour (v5)
Nodejs - A quick tour (v5)
 
Redis data modeling examples
Redis data modeling examplesRedis data modeling examples
Redis data modeling examples
 
Advanced Redis data structures
Advanced Redis data structuresAdvanced Redis data structures
Advanced Redis data structures
 
Nodejs - A quick tour (v4)
Nodejs - A quick tour (v4)Nodejs - A quick tour (v4)
Nodejs - A quick tour (v4)
 
Node.js in production
Node.js in productionNode.js in production
Node.js in production
 
Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)
 
Building Apps with MongoDB
Building Apps with MongoDBBuilding Apps with MongoDB
Building Apps with MongoDB
 
Debugging and Testing ES Systems
Debugging and Testing ES SystemsDebugging and Testing ES Systems
Debugging and Testing ES Systems
 
MongoDB: How it Works
MongoDB: How it WorksMongoDB: How it Works
MongoDB: How it Works
 
Elasticsearch 설치 및 기본 활용
Elasticsearch 설치 및 기본 활용Elasticsearch 설치 및 기본 활용
Elasticsearch 설치 및 기본 활용
 
ElasticSearch
ElasticSearchElasticSearch
ElasticSearch
 
NoSQL - An introduction to CouchDB
NoSQL - An introduction to CouchDBNoSQL - An introduction to CouchDB
NoSQL - An introduction to CouchDB
 
Python and MongoDB
Python and MongoDBPython and MongoDB
Python and MongoDB
 
CouchDB Open Source Bridge
CouchDB Open Source BridgeCouchDB Open Source Bridge
CouchDB Open Source Bridge
 
Apache CouchDB Presentation @ Sept. 2104 GTALUG Meeting
Apache CouchDB Presentation @ Sept. 2104 GTALUG MeetingApache CouchDB Presentation @ Sept. 2104 GTALUG Meeting
Apache CouchDB Presentation @ Sept. 2104 GTALUG Meeting
 
How do i Meet MongoDB
How do i Meet MongoDBHow do i Meet MongoDB
How do i Meet MongoDB
 
The emerging world of mongo db csp
The emerging world of mongo db   cspThe emerging world of mongo db   csp
The emerging world of mongo db csp
 

En vedette

Art exibition
Art exibitionArt exibition
Art exibition
maleemoha
 
Clarke slideshare
Clarke slideshareClarke slideshare
Clarke slideshare
mleigh7
 
Paginas libres
Paginas libresPaginas libres
Paginas libres
INGRID
 
Data Structures by Yaman Singhania
Data Structures by Yaman SinghaniaData Structures by Yaman Singhania
Data Structures by Yaman Singhania
Yaman Singhania
 
Kerajaankalingga
KerajaankalinggaKerajaankalingga
Kerajaankalingga
Pak Yayak
 

En vedette (20)

Art exibition
Art exibitionArt exibition
Art exibition
 
Power point Presentation
Power point PresentationPower point Presentation
Power point Presentation
 
EFFECTS OF SOCIAL MEDIA ON YOUTH
EFFECTS OF SOCIAL MEDIA ON YOUTHEFFECTS OF SOCIAL MEDIA ON YOUTH
EFFECTS OF SOCIAL MEDIA ON YOUTH
 
Clarke slideshare
Clarke slideshareClarke slideshare
Clarke slideshare
 
The Sleeping Beauty
The Sleeping BeautyThe Sleeping Beauty
The Sleeping Beauty
 
WhoIsFrancisFairley
WhoIsFrancisFairleyWhoIsFrancisFairley
WhoIsFrancisFairley
 
Paginas libres
Paginas libresPaginas libres
Paginas libres
 
POWER POINT PRESENTATION
POWER POINT PRESENTATIONPOWER POINT PRESENTATION
POWER POINT PRESENTATION
 
huruf prasekolah
huruf prasekolahhuruf prasekolah
huruf prasekolah
 
POWR POINT PRESENTATION
POWR POINT PRESENTATIONPOWR POINT PRESENTATION
POWR POINT PRESENTATION
 
Menupra1
Menupra1Menupra1
Menupra1
 
University Assignment Literacy Assessment
University Assignment Literacy AssessmentUniversity Assignment Literacy Assessment
University Assignment Literacy Assessment
 
Data Structures by Yaman Singhania
Data Structures by Yaman SinghaniaData Structures by Yaman Singhania
Data Structures by Yaman Singhania
 
Powerpoint Presentation
Powerpoint PresentationPowerpoint Presentation
Powerpoint Presentation
 
Classification of Elements Powerpoint Presentation by Computer Careers
Classification of Elements Powerpoint Presentation by Computer CareersClassification of Elements Powerpoint Presentation by Computer Careers
Classification of Elements Powerpoint Presentation by Computer Careers
 
Lm catering services
Lm catering servicesLm catering services
Lm catering services
 
Mata
MataMata
Mata
 
Madhusha B Ed
Madhusha B Ed Madhusha B Ed
Madhusha B Ed
 
Kerajaankalingga
KerajaankalinggaKerajaankalingga
Kerajaankalingga
 
Atomic Structure Powerpoint Presentation by Computer Careers
Atomic Structure Powerpoint Presentation by Computer CareersAtomic Structure Powerpoint Presentation by Computer Careers
Atomic Structure Powerpoint Presentation by Computer Careers
 

Similaire à Getting Started with MongoDB

Introduction to Mongo DB-open-­‐source, high-­‐performance, document-­‐orient...
Introduction to Mongo DB-open-­‐source, high-­‐performance, document-­‐orient...Introduction to Mongo DB-open-­‐source, high-­‐performance, document-­‐orient...
Introduction to Mongo DB-open-­‐source, high-­‐performance, document-­‐orient...
boychatmate1
 
Marc s01 e02-crud-database
Marc s01 e02-crud-databaseMarc s01 e02-crud-database
Marc s01 e02-crud-database
MongoDB
 
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
MongoDB
 

Similaire à Getting Started with MongoDB (20)

Getting Started with MongoDB (TCF ITPC 2014)
Getting Started with MongoDB (TCF ITPC 2014)Getting Started with MongoDB (TCF ITPC 2014)
Getting Started with MongoDB (TCF ITPC 2014)
 
Mongodb intro
Mongodb introMongodb intro
Mongodb intro
 
MongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overviewMongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overview
 
Mongo db php_shaken_not_stirred_joomlafrappe
Mongo db php_shaken_not_stirred_joomlafrappeMongo db php_shaken_not_stirred_joomlafrappe
Mongo db php_shaken_not_stirred_joomlafrappe
 
MongoDB at GUL
MongoDB at GULMongoDB at GUL
MongoDB at GUL
 
Getting Started with C++ (TCF 2014)
Getting Started with C++ (TCF 2014)Getting Started with C++ (TCF 2014)
Getting Started with C++ (TCF 2014)
 
OSDC 2012 | Building a first application on MongoDB by Ross Lawley
OSDC 2012 | Building a first application on MongoDB by Ross LawleyOSDC 2012 | Building a first application on MongoDB by Ross Lawley
OSDC 2012 | Building a first application on MongoDB by Ross Lawley
 
MongoDB NYC Python
MongoDB NYC PythonMongoDB NYC Python
MongoDB NYC Python
 
Indexing Strategies to Help You Scale
Indexing Strategies to Help You ScaleIndexing Strategies to Help You Scale
Indexing Strategies to Help You Scale
 
MongoDB Strange Loop 2009
MongoDB Strange Loop 2009MongoDB Strange Loop 2009
MongoDB Strange Loop 2009
 
Introduction to Mongo DB-open-­‐source, high-­‐performance, document-­‐orient...
Introduction to Mongo DB-open-­‐source, high-­‐performance, document-­‐orient...Introduction to Mongo DB-open-­‐source, high-­‐performance, document-­‐orient...
Introduction to Mongo DB-open-­‐source, high-­‐performance, document-­‐orient...
 
Presentation: mongo db & elasticsearch & membase
Presentation: mongo db & elasticsearch & membasePresentation: mongo db & elasticsearch & membase
Presentation: mongo db & elasticsearch & membase
 
Webinar: Building Your First Application with MongoDB
Webinar: Building Your First Application with MongoDBWebinar: Building Your First Application with MongoDB
Webinar: Building Your First Application with MongoDB
 
Combine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quicklCombine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quickl
 
Starting with MongoDB
Starting with MongoDBStarting with MongoDB
Starting with MongoDB
 
Marc s01 e02-crud-database
Marc s01 e02-crud-databaseMarc s01 e02-crud-database
Marc s01 e02-crud-database
 
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
Webinarserie: Einführung in MongoDB: “Back to Basics” - Teil 3 - Interaktion ...
 
Webinar: General Technical Overview of MongoDB for Dev Teams
Webinar: General Technical Overview of MongoDB for Dev TeamsWebinar: General Technical Overview of MongoDB for Dev Teams
Webinar: General Technical Overview of MongoDB for Dev Teams
 
Full metal mongo
Full metal mongoFull metal mongo
Full metal mongo
 
MongoDB at CodeMash 2.0.1.0
MongoDB at CodeMash 2.0.1.0MongoDB at CodeMash 2.0.1.0
MongoDB at CodeMash 2.0.1.0
 

Plus de Michael Redlich

Plus de Michael Redlich (20)

Getting Started with GitHub
Getting Started with GitHubGetting Started with GitHub
Getting Started with GitHub
 
Building Microservices with Micronaut: A Full-Stack JVM-Based Framework
Building Microservices with Micronaut:  A Full-Stack JVM-Based FrameworkBuilding Microservices with Micronaut:  A Full-Stack JVM-Based Framework
Building Microservices with Micronaut: A Full-Stack JVM-Based Framework
 
Building Microservices with Helidon: Oracle's New Java Microservices Framework
Building Microservices with Helidon:  Oracle's New Java Microservices FrameworkBuilding Microservices with Helidon:  Oracle's New Java Microservices Framework
Building Microservices with Helidon: Oracle's New Java Microservices Framework
 
Introduction to Object Oriented Programming & Design Principles
Introduction to Object Oriented Programming & Design PrinciplesIntroduction to Object Oriented Programming & Design Principles
Introduction to Object Oriented Programming & Design Principles
 
Getting Started with C++
Getting Started with C++Getting Started with C++
Getting Started with C++
 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
 
Java Advanced Features
Java Advanced FeaturesJava Advanced Features
Java Advanced Features
 
Introduction to Object Oriented Programming &amp; Design Principles
Introduction to Object Oriented Programming &amp; Design PrinciplesIntroduction to Object Oriented Programming &amp; Design Principles
Introduction to Object Oriented Programming &amp; Design Principles
 
Getting Started with Java
Getting Started with JavaGetting Started with Java
Getting Started with Java
 
Getting started with C++
Getting started with C++Getting started with C++
Getting started with C++
 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
 
Building Realtime Access to Data Apps with jOOQ
Building Realtime Access to Data Apps with jOOQBuilding Realtime Access to Data Apps with jOOQ
Building Realtime Access to Data Apps with jOOQ
 
Building Realtime Access Data Apps with Speedment (TCF ITPC 2017)
Building Realtime Access Data Apps with Speedment (TCF ITPC 2017)Building Realtime Access Data Apps with Speedment (TCF ITPC 2017)
Building Realtime Access Data Apps with Speedment (TCF ITPC 2017)
 
Building Realtime Web Apps with Angular and Meteor
Building Realtime Web Apps with Angular and MeteorBuilding Realtime Web Apps with Angular and Meteor
Building Realtime Web Apps with Angular and Meteor
 
Java Advanced Features (TCF 2014)
Java Advanced Features (TCF 2014)Java Advanced Features (TCF 2014)
Java Advanced Features (TCF 2014)
 
Introduction to Object-Oriented Programming & Design Principles (TCF 2014)
Introduction to Object-Oriented Programming & Design Principles (TCF 2014)Introduction to Object-Oriented Programming & Design Principles (TCF 2014)
Introduction to Object-Oriented Programming & Design Principles (TCF 2014)
 
Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)
 
Getting Started with Java (TCF 2014)
Getting Started with Java (TCF 2014)Getting Started with Java (TCF 2014)
Getting Started with Java (TCF 2014)
 
C++ Advanced Features (TCF 2014)
C++ Advanced Features (TCF 2014)C++ Advanced Features (TCF 2014)
C++ Advanced Features (TCF 2014)
 
Getting Started with Meteor
Getting Started with MeteorGetting Started with Meteor
Getting Started with Meteor
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Dernier (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Getting Started with MongoDB

  • 1. Getting Started with MongoDB Capital District Java Developers Network January 16, 2014 Michael P. Redlich @mpredli about.me/mpredli/ 1 Friday, January 17, 14 1
  • 2. Who’s Mike? • BS in CS from Rutgers University • “Petrochemical Research Organization” • Ai-Logix, Inc. (now AudioCodes) • Amateur Computer Group of New Jersey • Publications • Presentations 2 Friday, January 17, 14 2
  • 3. Upcoming Events • Trenton Computer Festival • March 14-15, 2014 • tcf-nj.org • Emerging Technologies for the Enterprise • April 22-23, 2014 • phillyemergingtech.com 3 Friday, January 17, 14 3
  • 5. Objectives • What is MongoDB? • What is NoSQL? • Getting Started with MongoDB • Basic CRUD Operations • Live Demos (yea!) • MongoDB Resources 5 Friday, January 17, 14 5
  • 6. What is MongoDB? (1) • “...an open-source document database that provides high performance, high availability, and automatic scaling.” MongoDB Web Site, http://www.mongodb.org/ • It’s name derived from “humongous” • Written in C++ 6 Friday, January 17, 14 6
  • 7. What is MongoDB? (2) • “...an open-source database used by companies of all sizes, across all industries and for a wide variety of applications. It is an agile database that allows schemas to change quickly as applications evolve, while still providing functionality developers expect from traditional databases...” MongoDB Products Web Site, http://www.mongodb.com/products/mongodb/ 7 Friday, January 17, 14 7
  • 8. What is NoSQL? • Developed to address shortcomings of a traditional SQL relational database, namely: • big data • frequency of access to big data • performance and scalability 8 Friday, January 17, 14 8
  • 10. Who is Using MongoDB? 10 Friday, January 17, 14 10
  • 11. Features of MongoDB • • • • • Document-Oriented Storage • • Full Index Support • • Auto-Sharding Replication and High Availability Fast In-Place Updates Map/Reduce GridFS Professional Support by MongoDB Querying 11 Friday, January 17, 14 11
  • 14. What is a Document? • Basic unit of data • analogous to a row in a RDBMS • An ordered set of fields (keys) with associated values stored in BSON format • similar to JSON 14 Friday, January 17, 14 14
  • 15. What is BSON? • “...a binary-encoded serialization of JSON-like documents.” BSON Web Site, http://www.bsonspec.org/ • Binary JSON • Designed to be lightweight, traversable, and efficient 15 Friday, January 17, 14 15
  • 16. What is a Collection? • A group of documents • analogous to a table in a RDBMS • Schema-less 16 Friday, January 17, 14 16
  • 17. Advantages of Documents • Documents correspond to native data types in many programming languages • Embedded documents and arrays reduce the need for expensive joins • Dynamic schema support fluent polymorphism 17 Friday, January 17, 14 17
  • 18. Document Structure { embedded document lastName : “Redlich”, firstName : “Michael”, email : “mike@redlich.net” role : { officer : “President”, field sig : “Java Users Group” value } } 18 Friday, January 17, 14 18
  • 19. Field Names • Strings • Cannot contain: • null • dots (.) • dollar sign ($) • No duplicate field names 19 Friday, January 17, 14 19
  • 20. Conventions • Command Prompt ($) • MySQL prompt (mysql>) • MongoDB prompt (>) • Keywords (db, find(), etc.) • Variables (variable) 20 Friday, January 17, 14 20
  • 21. Example Database • ACGNJ Board of Directors: • lastName • firstName • roles (embedded documents) • tenure 21 Friday, January 17, 14 21
  • 22. Getting Started • Download MongoDB • Create a default data directory •/data/db •C:datadb • Create your first MongoDB database 22 Friday, January 17, 14 22
  • 23. Starting MongoDB • Start an instance of the MongoDB server: $ mongod • Start an instance of the MongoDB client (a JavaScript-based shell): $ mongo 23 Friday, January 17, 14 23
  • 24. Mongo Shell (1) • Show the list of shell commands: > help • Show the list of databases: > show dbs • Show the current database: > db 24 Friday, January 17, 14 24
  • 25. Mongo Shell (2) • Specify the database to use or create: > use database • Show the collections within the current database: > show collections • Show the users within the database: > show users 25 Friday, January 17, 14 25
  • 26. Mongo Shell (3) • Show the recent system.profile entries: > show profile • Tab completion • Command history 26 Friday, January 17, 14 26
  • 27. Primary Key • Denoted by a special field, _id • It can be generated: • Implicitly: {_id : ObjectID(value)} • • Explicitly: • {_id : 2 }, { _id : “MPR”} 27 Friday, January 17, 14 27
  • 28. ObjectIDs • Default type for _id • A 12-byte hexadecimal BSON type: 28 Friday, January 17, 14 28
  • 31. Create a Database • Create a database in MySQL: mysql> CREATE DATABASE database; • Create a database in MongoDB: > use database 31 Friday, January 17, 14 31
  • 32. Create a Collection • Create a new table in MySQL: mysql> CREATE TABLE table(column datatype,...); • Create a new collection in MongoDB: > db.collection.insert({field:value,. ..}) 32 Friday, January 17, 14 32
  • 33. Insert Data • Insert a row in MySQL: > INSERT INTO table(column,...) VALUES(value,...); • Insert a document in MongoDB: > db.collection.insert({field:value,. ..}) 33 Friday, January 17, 14 33
  • 34. Insert Data with Loops • Insert multiple documents with an array: > for(int i = 0;i < j;++i) db.collection.insert({field:array[i ]}); • Insert multiple documents with variable: > for(int i = 0;i < j;++i) db.collection.insert({field:i}) 34 Friday, January 17, 14 34
  • 37. Query (1) • Retrieve all rows in MySQL: mysql> SELECT * FROM table; • Retrieve all documents in MongoDB: > db.collection.find() 37 Friday, January 17, 14 37
  • 38. Query (2) • Retrieve specified columns in MySQL: mysql> SELECT column1,column2 FROM table; • Retrieve specified fields in MongoDB: > db.collection.find({}, {field1:true,field2:true}) 38 Friday, January 17, 14 38
  • 39. Query (3) • Retrieve specific rows in MySQL: mysql> SELECT * FROM table WHERE column = value; • Retrieve specific documents in MongoDB: > db.collection.find({field:value}) 39 Friday, January 17, 14 39
  • 40. Query (4) • Retrieve specific rows in MySQL: mysql> SELECT * FROM table WHERE column = value ORDER BY value ASC; • Retrieve specific documents in MongoDB: > db.collection.find({field:value}).s ort({field:1}) 40 Friday, January 17, 14 40
  • 41. Query (5) • Query for multiple documents (returns a cursor): > db.collection.find() • Query for one document (returns a single document): > db.collection.findOne() 41 Friday, January 17, 14 41
  • 42. Query Selectors • Scalar: • $ne, $mod, $exists, $type, $lt, $lte, $gt, $gte • Vector: • $in, $nin, $all, $size 42 Friday, January 17, 14 42
  • 43. Query (6) • Retrieve specific rows in MySQL: mysql> SELECT * FROM table WHERE column != value; • Retrieve specific documents in MongoDB: > db.collection.find({field: {$ne:value}}) 43 Friday, January 17, 14 43
  • 44. Query (7) • Retrieve specific rows in MySQL: mysql> SELECT * FROM table WHERE column1 = value OR column2 = value; • Retrieve specific documents in MongoDB: > db.collection.find({$or: [{field:value},{field:value}]) 44 Friday, January 17, 14 44
  • 45. Query (8) > db.members.aggregate({$project: {officer:"$roles.officer"}}) > db.members.find({tenure: {$gt:ISODate("2014-12-31")}}) > db.members.find({"roles.officer": {$exists:true}}).sort({"roles.offic er":1}) 45 Friday, January 17, 14 45
  • 49. Update (1) • Update a row in MySQL: mysql> UPDATE table SET column = value WHERE id = id; • Update a document in a MongoDB: > db.collection.update({_id:value}, {$set:{field:value}},{multi:true}) 49 Friday, January 17, 14 49
  • 50. Update (2) • Update a row in MySQL: mysql> UPDATE table SET column1 = value WHERE column2 > value; • Update a document in MongoDB: > db.collection.update({field1: {$gt:value}},{$set:{field2:value}}, {multi:true}) 50 Friday, January 17, 14 50
  • 51. Update (3) • Update a document using findOne(): > redlich = db.members.findOne({lastName: "Redlich"}) > redlich.roles = [{sig:"Java Users Group"}] > db.members.update({lastName: "Redlich"},redlich) 51 Friday, January 17, 14 51
  • 52. Atomic Update Operators • Scalar: • $inc, $set, $unset • Vector: • $push, $pop, $pull, $pushAll, $pullAll, $addToSet 52 Friday, January 17, 14 52
  • 53. Update (4) > db.members.update({lastName: "Redlich"},{$set: {"ISODate("2016-12-31")}}) > db.members.update({"roles.sig"}, {$set:{"roles.sig":"JUG"}}) 53 Friday, January 17, 14 53
  • 55. Delete (1) • Delete all rows in MySQL: mysql> DELETE FROM table; • Delete all documents in MongoDB: > db.collection.remove() 55 Friday, January 17, 14 55
  • 56. Delete (2) • Delete specific rows in MySQL: mysql> DELETE FROM table WHERE column = value; • Delete specific documents in MongoDB: > db.collection.remove({field:value}) 56 Friday, January 17, 14 56
  • 57. Delete (2) • Delete a MySQL database mysql> DROP DATABASE database; • Delete a MongoDB database > use database > db.dropDatabase() 57 Friday, January 17, 14 57
  • 59. Export (1) • Export a collection to a JSON file • Ensure mongod is running $ mongoexport --db database -collection collection --out path/ filename.json 59 Friday, January 17, 14 59
  • 60. Export (2) • Export a collection to a CSV file • Ensure mongod is running • A list of fields is required $ mongoexport --db database -collection collection --fields field1,field2,... --csv --out path/ filename.json 60 Friday, January 17, 14 60
  • 61. Import • Import a collection from a JSON, CSV, or TSV file • Ensure mongod is running $ mongoimport --db database -collection collection < path/ filename.json 61 Friday, January 17, 14 61
  • 62. Dump • Dump a specified MySQL database: $ mysqldump -u root --opt database > path.filename.sql • Dump all MongoDB databases: • Ensure mongod is not running $ mongodump --dbpath /data/db --out path 62 Friday, January 17, 14 62
  • 64. Package Components (1) • Core Processes • mongod - core DB process • mongos - controller & query router (sharding) • mongo - interactive JavaScript-based shell 64 Friday, January 17, 14 64
  • 65. Package Components (2) • Binary Import and Export • mongodump - creates BSON dump files • mongorestore - restores BSON dump files • bsondump - converts BSON to JSON • mongooplog - streams oplog entries 65 Friday, January 17, 14 65
  • 66. Package Components (3) • Data Import and Export • mongoimport - imports JSON, CSV, or TSV data formats • mongoexport - exports to JSON, CSV, or TSV data formats 66 Friday, January 17, 14 66
  • 67. Package Components (4) • Diagnostic Tools • mongostat - captures database operations by type (insert, query, etc.) • mongotop - tracks read/write activity • mongosniff - provides tracing/sniffing view into database activity • mongoperf - performance testing tool 67 Friday, January 17, 14 67
  • 68. Package Components (5) • GridFS • mongofiles - provides a commandline interaction to a GridFS storage system 68 Friday, January 17, 14 68
  • 70. MongoDB Resources (2) • mongodb.org • docs.mongodb.org • mongodb.org/books • mongodb.com/products/mongodb • mongodb.com/reference • bsonspec.org • education.mongodb.com 70 Friday, January 17, 14 70