SlideShare a Scribd company logo
#MDBE17
O2 Intercontinental
MONGODB STITCH
INTRODUCTION
#MDBE17
Product Manager – MongoDB Stitch
DREW DIPALMA
#MDBE17
Apps today need…
1. A good idea
2. Ways to easily work with data
3. Integrations with key services
4. Ability to scalably serve
requests
#MDBE17
MongoDB Query Language + Native DriversIntegrated Rules
Pipelines 3rd
Party Services
Native SDKs (JavaScript, Android, iOS)
REST API
#MDBE17
Integrated services and
Pipelines for complex,
multi-stage workflows
Native SDKs for Android,
JS, and iOS clients
Direct Database Access
#MDBE17
•A backend with scalability, performance, or high-availability
•Key management covered by Atlas
• Scaling, high-availability, upgrades, backup, and monitoring
•Retain traditional access methods
• Use drivers, shell, Compass, etc.
• Direct data access for data movement, analysis, or additional workflows
•No lock-in
• Atlas available in AWS, Azure, and GCP in most regions
• Stitch in AWS US East for Beta – Expansion upcoming
STITCH + ATLAS
#MDBE17
How requests work…
1. Application request is made
1
#MDBE17
How requests work…
1. Application request is made
2. Stitch parses and applies write rules
2
#MDBE17
How requests work…
1. Application request is made
2. Stitch parses and applies write rules
3. Stitch orchestrates DB + Services
3
3
#MDBE17
How requests work…
1. Application request is made
2. Stitch parses and applies write rules
3. Stitch orchestrates DB + Services
4. Stitch aggregates and applies rules
4
#MDBE17
How requests work…
1. Application request is made
2. Stitch parses and applies write rules
3. Stitch orchestrates DB + Services
4. Stitch aggregates and applies rules
5. Client receives results 5
const stitchClient = new StitchClient('APP-ID');
const mongodbClient = stitchClient.service('mongodb', 'mongodb-atlas');
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
const stitchClient = new StitchClient('APP-ID');
const mongodbClient = stitchClient.service('mongodb', 'mongodb-atlas');
const db = mongoClient.db('guidebook');
const coll = db.collection('restaurants');
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
const stitchClient = new StitchClient('APP-ID');
const mongodbClient = stitchClient.service('mongodb', 'mongodb-atlas');
const db = mongoClient.db('guidebook');
const coll = db.collection('restaurants');
client.login() //Anonymous or Email + Password
client.authenticate(’providerType', {options}) //Any type of Auth
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
const stitchClient = new StitchClient('APP-ID');
const mongodbClient = stitchClient.service('mongodb', 'mongodb-atlas');
const db = mongoClient.db('guidebook');
const coll = db.collection('restaurants');
client.login() //Anonymous or Email + Password
client.authenticate(’providerType', {options}) //Any type of Auth
coll.find({'name' : text })
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
const stitchClient = new StitchClient('APP-ID');
const mongodbClient = stitchClient.service('mongodb', 'mongodb-atlas');
const db = mongoClient.db('guidebook');
const coll = db.collection('restaurants');
client.login() //Anonymous or Email + Password
client.authenticate(’providerType', {options}) //Any type of Auth
coll.find({'name' : text })
.count(….)
.deleteMany(….)
.deleteOne(….)
.insertMany(….)
.insertOne(….)
.updateMany(….)
.updateOne(….)
STITCH CONCEPTS
MongoDB Services Pipelines Expansions
const slackService = client.service('slack', 'slackService')
slackService.post('slackChannel', 'slack username', message)
const twilioService = client.service('twilio', 'twilioService')
twilioService.send('+120155555553', '+12018675309', message)
const s3Service = client.service('s3', 's3Service')
s3Service.signPolicy(bucket, key, acl, contentType)
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
const mongodb = client.service('mongodb', 'mongodb-atlas');
const twilio = client.service('twilio', 'twilioService');
 
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
const mongodb = client.service('mongodb', 'mongodb-atlas');
const twilio = client.service('twilio', 'twilioService');
 
client.executePipeline([
 
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
const mongodb = client.service('mongodb', 'mongodb-atlas');
const twilio = client.service('twilio', 'twilioService');
 
client.executePipeline([
 
mongodb.db('people').collection('users').find({ city: 'SF' })]),
 
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
const mongodb = client.service('mongodb', 'mongodb-atlas');
const twilio = client.service('twilio', 'twilioService');
 
client.executePipeline([
 
mongodb.db('people').collection('users').find({ city: 'SF' })]),
 
twilio
.send('SF Users???', '+12018675309', 'Looks like rain today!')
.let({ toPhone: 'SF Users???'})
]);
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
const mongodb = client.service('mongodb', 'mongodb-atlas');
const twilio = client.service('twilio', 'twilioService');
 
client.executePipeline([
 
mongodb.db('people').collection('users').find({ city: 'SF' })]),
 
twilio
.send('SF Users???', '+12018675309', 'Looks like rain today!')
.let({ toPhone: 'SF Users???'})
]);
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
const mongodb = client.service('mongodb', 'mongodb-atlas');
const twilio = client.service('twilio', 'twilioService');
 
client.executePipeline([
 
mongodb.db('people').collection('users').find({ city: 'SF' })]),
 
twilio
   .send('%%vars.toPhone', '+12018675309', 'Looks like rain today!')
   .let({ toPhone: '%%item.phone' })
]);
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
Global
%%true
%%false
%%values
%%user
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
Global
%%true
%%false
%%values
%%user
User
%%user.id
%%user.type
%%user.data
%%user.identities
MongoDB Services Pipelines Expansions
STITCH CONCEPTS
Global
%%true
%%false
%%values
%%user
User
%%user.id
%%user.type
%%user.data
%%user.identities
MongoDB Services Pipelines
MongoDB
%%this
%%prev
%%root
%%prevRoot
STITCH CONCEPTS
Expansions
Global
%%true
%%false
%%values
%%user
User
%%user.id
%%user.type
%%user.data
%%user.identities
MongoDB Services Pipelines
MongoDB
%%this
%%prev
%%root
%%prevRoot
Stage Specific
%%vars
%%args
%%item
%%pipelines
STITCH CONCEPTS
Expansions
#MDBE17
RULES: DECLARATIVE ACCESS CONTROL
• Rules control access
‒ Read
‒ Write
‒ Validate
• Defined at document or field level
• Add data from user, database, or
external systems with
expansions/pipelines
• Defined with simple JSON
#MDBE17
Atlas
Customer Account Data
{
"owner_id": … ,
"balance": … ,
"transactions": {…},
"user_profile": {….}
}Bank Teller
Analys
t
Custome
r
Roles,Permissions,andSecurity
Application
Reporting Data Mart
User Profile:
“I need to access my account”
Role Based:
“I need to lookup transactions
without seeing personal information”
Aggregate Only:
“I need to understand the bank’s total
cash flow”
#MDBE17
Bank Teller
Analys
t
Custome
r
Atlas
Customer Account Data
{
"owner_id": … ,
"balance": … ,
"transactions": {…},
"user_profile": {….}
}
Stitch
user_profile
(Read Rule)
{”owner_id": ”%%user.id"}
balance/transactions
(Read Rules)
{
”%or": [
{”owner_id": ”%%user.id"},
{"%%true": { "%pipeline":
{ "name": ”isTeller",
"args": { ”User": "%%user"}
}
]
}
{
"user_id": … ,
"balance": … ,
"transactions": {…},
"user_profile": {….}
}
#MDBE17
Stitch
user_profile
(Read Rule)
{”owner_id": ”%%user.id"}
balance/transactions
(Read Rules)
{
”%or": [
{”owner_id": ”%%user.id"},
{"%%true": { "%pipeline":
{ "name": ”isTeller",
"args": { ”User": "%%user"}
}
]
}
Bank Teller
Analys
t
Custome
r
Atlas
Customer Account Data
{
"owner_id": … ,
"balance": … ,
"transactions": {…},
"user_profile": {….}
}
{
"user_id": … ,
"balance": … ,
"transactions": {…}
}
#MDBE17
Stitch
user_profile
(Read Rule)
{”owner_id": ”%%user.id"}
balance/transactions
(Read Rules)
{
”%or": [
{”owner_id": ”%%user.id"},
{"%%true": { "%pipeline":
{ "name": ”isTeller",
"args": { ”User": "%%user"}
}
]
}
Bank Teller
Analys
t
Custome
r
{Aggregated
Data}
Stitch
Pipeline for Analysis
{“$$pipeline.currentRole”:
“Analyst”}
Atlas
Customer Account Data
{
"owner_id": … ,
"balance": … ,
"transactions": {…},
"user_profile": {….}
}
STITCH IN ACTION
#MDBE17
TROUBLESHOOTING IN STITCH
• Logs
‒ Track request/user/status
‒ Searchable
‒ Requests openable in Debug
Console
• Debug Console
‒ Execute requests to test
‒ Impersonate different users
#MDBE17
• $1 per GB of data transferred from Stitch to client/service
• Data transfer to Atlas is free
• 25 GB Free per month
PRICING
#MDBE17
xx
EverywhereRealtime
Expand Regional footprint
Available on-premise
Bring any MongoDB
Change Streams driven
Event-based pipelines
More Tools
Improved Pipelines
Code and Rule Versioning
Debugging and Monitoring
Service Extensibility
WHAT’S NEXT WITH STITCH?
#MDBE17
Add Features
• Take your app to a
new platform
• Build a better
permissions system
or a separate admin
portal
• Add additional
authentication
providers
Expose Data
• Provide an API for
safe, internal data
access
• Build a preciser
permissions system
• Create a real-time
dashboard with
authentication and
security built-in
Integrate Services
• Integrate with any
service or API with
minimal code
• Consume/action on
data in real time
with webhooks
• Communicate with
data using text,
e-mail, slack, etc.
Complete Backend
• Build faster without
boilerplate code
• Easily span multiple
platforms
• Scale at a moments
notice
• Single, simplified
point to manage
infrastructure/logic
WHERE TO USE STITCH?
#MDBE17
• Get started at our Tutorial later today!
• Building Your First App with MongoDB Stitch
• 3:45 – 5:05 in Breakout Room N
• Check out Stitch – stitch.mongodb.com
• Check out SDKs and examples
• Code at github.com/MongodbStitch
• Docs at docs.mongodb.com/stitch
• Ask Questions or let us know what you’re building through Intercom
WHAT NOW?
MongoDB Stitch Introduction

More Related Content

PDF
Managing Cloud Security Design and Implementation in a Ransomware World
PPTX
Building Your First App with MongoDB Stitch
PDF
Building Your Own MongoDB as a Service Offering
PPTX
Scaling and Transaction Futures
PPTX
Webinar: Get Started with the MEAN Stack
PPTX
Building the Real-Time Performance Panel
PPTX
Bye Bye Legacy: Simplifying the Journey
PPTX
Keynote - Speaker: Grigori Melnik
Managing Cloud Security Design and Implementation in a Ransomware World
Building Your First App with MongoDB Stitch
Building Your Own MongoDB as a Service Offering
Scaling and Transaction Futures
Webinar: Get Started with the MEAN Stack
Building the Real-Time Performance Panel
Bye Bye Legacy: Simplifying the Journey
Keynote - Speaker: Grigori Melnik

What's hot (20)

PDF
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
PPTX
Trading up: Adding Flexibility and Scalability to Bouygues Telecom with MongoDB
PPTX
Replacing Traditional Technologies with MongoDB: A Single Platform for All Fi...
PDF
Building LinkedIn's Learning Platform with MongoDB
PPTX
Jumpstart: Building Your First App with MongoDB
PPTX
Transforming a Large Mission-Critical E-Commerce Platform from a Relational A...
PPTX
MongoDB Stitch Introduction
PPTX
MongoDB 3.4: Deep Dive on Views, Zones, and MongoDB Compass
PPTX
Experian Health: Moving Universal Identity Manager from ANSI SQL to MongoDB
PDF
MongoDB .local Toronto 2019: Keep your Business Safe and Scaling Holistically...
PPTX
[MongoDB.local Bengaluru 2018] Introduction to MongoDB Stitch
PPTX
Webinar: Elevate Your Enterprise Architecture with In-Memory Computing
PPTX
Ch-Ch-Ch-Ch-Changes: Taking Your MongoDB Stitch Application to the Next Level...
PPT
Turning client-side-to-server-side-ruxcon-2011-laurent
PPTX
Managing Multi-Tenant SaaS Applications at Scale
PPTX
MongDB Mobile: Bringing the Power of MongoDB to Your Device
PDF
MongoDB.local Austin 2018: MongoDB Mobile: Bringing the Power of MongoDB to Y...
PDF
MongoDB .local Paris 2020: Devenez explorateur de données avec MongoDB Charts
PPTX
MongoDB Mobile: Bringing the Power of MongoDB to Your Device
PPTX
MongoDB.local Sydney 2019: MongoDB Mobile: Bringing the Power of MongoDB to Y...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
Trading up: Adding Flexibility and Scalability to Bouygues Telecom with MongoDB
Replacing Traditional Technologies with MongoDB: A Single Platform for All Fi...
Building LinkedIn's Learning Platform with MongoDB
Jumpstart: Building Your First App with MongoDB
Transforming a Large Mission-Critical E-Commerce Platform from a Relational A...
MongoDB Stitch Introduction
MongoDB 3.4: Deep Dive on Views, Zones, and MongoDB Compass
Experian Health: Moving Universal Identity Manager from ANSI SQL to MongoDB
MongoDB .local Toronto 2019: Keep your Business Safe and Scaling Holistically...
[MongoDB.local Bengaluru 2018] Introduction to MongoDB Stitch
Webinar: Elevate Your Enterprise Architecture with In-Memory Computing
Ch-Ch-Ch-Ch-Changes: Taking Your MongoDB Stitch Application to the Next Level...
Turning client-side-to-server-side-ruxcon-2011-laurent
Managing Multi-Tenant SaaS Applications at Scale
MongDB Mobile: Bringing the Power of MongoDB to Your Device
MongoDB.local Austin 2018: MongoDB Mobile: Bringing the Power of MongoDB to Y...
MongoDB .local Paris 2020: Devenez explorateur de données avec MongoDB Charts
MongoDB Mobile: Bringing the Power of MongoDB to Your Device
MongoDB.local Sydney 2019: MongoDB Mobile: Bringing the Power of MongoDB to Y...
Ad

Similar to MongoDB Stitch Introduction (20)

PPTX
MongoDB Stich Overview
PDF
Introducing MongoDB Stitch, Backend-as-a-Service from MongoDB
PPTX
Tutorial: Building Your First App with MongoDB Stitch
PPTX
Introducing Stitch
PPTX
Building Your First App with MongoDB Stitch
PPTX
Evolving your Data Access with MongoDB Stitch - Drew Di Palma
PPTX
SH 1 - SES 8 - Stitch_Overview_TLV.pptx
PPTX
MongoDB.local Atlanta: Introduction to Serverless MongoDB
PDF
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
PPTX
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
PPTX
MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
PPTX
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
PDF
All Streams Ahead! ksqlDB Workshop ANZ
PPTX
N1QL workshop: Indexing & Query turning.
PPTX
Novedades de MongoDB 3.6
PPTX
Deep dive into N1QL: SQL for JSON: Internals and power features.
PDF
Serverless Design Patterns (London Dev Community)
PPTX
MongoDB.local Austin 2018: Ch-Ch-Ch-Ch-Changes: Taking Your MongoDB Stitch A...
PPTX
Eagle6 mongo dc revised
PPTX
Eagle6 Enterprise Situational Awareness
MongoDB Stich Overview
Introducing MongoDB Stitch, Backend-as-a-Service from MongoDB
Tutorial: Building Your First App with MongoDB Stitch
Introducing Stitch
Building Your First App with MongoDB Stitch
Evolving your Data Access with MongoDB Stitch - Drew Di Palma
SH 1 - SES 8 - Stitch_Overview_TLV.pptx
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
All Streams Ahead! ksqlDB Workshop ANZ
N1QL workshop: Indexing & Query turning.
Novedades de MongoDB 3.6
Deep dive into N1QL: SQL for JSON: Internals and power features.
Serverless Design Patterns (London Dev Community)
MongoDB.local Austin 2018: Ch-Ch-Ch-Ch-Changes: Taking Your MongoDB Stitch A...
Eagle6 mongo dc revised
Eagle6 Enterprise Situational Awareness
Ad

More from MongoDB (20)

PDF
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
PDF
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
PDF
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
PDF
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
PDF
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
PDF
MongoDB SoCal 2020: MongoDB Atlas Jump Start
PDF
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
PDF
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
PDF
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
PDF
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
PDF
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
PDF
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
PDF
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
PDF
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
PDF
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
PDF
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
PDF
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
PDF
MongoDB .local Paris 2020: Tout savoir sur le moteur de recherche Full Text S...
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Tout savoir sur le moteur de recherche Full Text S...

MongoDB Stitch Introduction

  • 2. #MDBE17 Product Manager – MongoDB Stitch DREW DIPALMA
  • 3. #MDBE17 Apps today need… 1. A good idea 2. Ways to easily work with data 3. Integrations with key services 4. Ability to scalably serve requests
  • 4. #MDBE17 MongoDB Query Language + Native DriversIntegrated Rules Pipelines 3rd Party Services Native SDKs (JavaScript, Android, iOS) REST API
  • 5. #MDBE17 Integrated services and Pipelines for complex, multi-stage workflows Native SDKs for Android, JS, and iOS clients Direct Database Access
  • 6. #MDBE17 •A backend with scalability, performance, or high-availability •Key management covered by Atlas • Scaling, high-availability, upgrades, backup, and monitoring •Retain traditional access methods • Use drivers, shell, Compass, etc. • Direct data access for data movement, analysis, or additional workflows •No lock-in • Atlas available in AWS, Azure, and GCP in most regions • Stitch in AWS US East for Beta – Expansion upcoming STITCH + ATLAS
  • 7. #MDBE17 How requests work… 1. Application request is made 1
  • 8. #MDBE17 How requests work… 1. Application request is made 2. Stitch parses and applies write rules 2
  • 9. #MDBE17 How requests work… 1. Application request is made 2. Stitch parses and applies write rules 3. Stitch orchestrates DB + Services 3 3
  • 10. #MDBE17 How requests work… 1. Application request is made 2. Stitch parses and applies write rules 3. Stitch orchestrates DB + Services 4. Stitch aggregates and applies rules 4
  • 11. #MDBE17 How requests work… 1. Application request is made 2. Stitch parses and applies write rules 3. Stitch orchestrates DB + Services 4. Stitch aggregates and applies rules 5. Client receives results 5
  • 12. const stitchClient = new StitchClient('APP-ID'); const mongodbClient = stitchClient.service('mongodb', 'mongodb-atlas'); MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 13. const stitchClient = new StitchClient('APP-ID'); const mongodbClient = stitchClient.service('mongodb', 'mongodb-atlas'); const db = mongoClient.db('guidebook'); const coll = db.collection('restaurants'); MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 14. const stitchClient = new StitchClient('APP-ID'); const mongodbClient = stitchClient.service('mongodb', 'mongodb-atlas'); const db = mongoClient.db('guidebook'); const coll = db.collection('restaurants'); client.login() //Anonymous or Email + Password client.authenticate(’providerType', {options}) //Any type of Auth MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 15. const stitchClient = new StitchClient('APP-ID'); const mongodbClient = stitchClient.service('mongodb', 'mongodb-atlas'); const db = mongoClient.db('guidebook'); const coll = db.collection('restaurants'); client.login() //Anonymous or Email + Password client.authenticate(’providerType', {options}) //Any type of Auth coll.find({'name' : text }) MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 16. const stitchClient = new StitchClient('APP-ID'); const mongodbClient = stitchClient.service('mongodb', 'mongodb-atlas'); const db = mongoClient.db('guidebook'); const coll = db.collection('restaurants'); client.login() //Anonymous or Email + Password client.authenticate(’providerType', {options}) //Any type of Auth coll.find({'name' : text }) .count(….) .deleteMany(….) .deleteOne(….) .insertMany(….) .insertOne(….) .updateMany(….) .updateOne(….) STITCH CONCEPTS MongoDB Services Pipelines Expansions
  • 17. const slackService = client.service('slack', 'slackService') slackService.post('slackChannel', 'slack username', message) const twilioService = client.service('twilio', 'twilioService') twilioService.send('+120155555553', '+12018675309', message) const s3Service = client.service('s3', 's3Service') s3Service.signPolicy(bucket, key, acl, contentType) MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 18. const mongodb = client.service('mongodb', 'mongodb-atlas'); const twilio = client.service('twilio', 'twilioService');   MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 19. const mongodb = client.service('mongodb', 'mongodb-atlas'); const twilio = client.service('twilio', 'twilioService');   client.executePipeline([   MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 20. const mongodb = client.service('mongodb', 'mongodb-atlas'); const twilio = client.service('twilio', 'twilioService');   client.executePipeline([   mongodb.db('people').collection('users').find({ city: 'SF' })]),   MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 21. const mongodb = client.service('mongodb', 'mongodb-atlas'); const twilio = client.service('twilio', 'twilioService');   client.executePipeline([   mongodb.db('people').collection('users').find({ city: 'SF' })]),   twilio .send('SF Users???', '+12018675309', 'Looks like rain today!') .let({ toPhone: 'SF Users???'}) ]); MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 22. const mongodb = client.service('mongodb', 'mongodb-atlas'); const twilio = client.service('twilio', 'twilioService');   client.executePipeline([   mongodb.db('people').collection('users').find({ city: 'SF' })]),   twilio .send('SF Users???', '+12018675309', 'Looks like rain today!') .let({ toPhone: 'SF Users???'}) ]); MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 23. const mongodb = client.service('mongodb', 'mongodb-atlas'); const twilio = client.service('twilio', 'twilioService');   client.executePipeline([   mongodb.db('people').collection('users').find({ city: 'SF' })]),   twilio    .send('%%vars.toPhone', '+12018675309', 'Looks like rain today!')    .let({ toPhone: '%%item.phone' }) ]); MongoDB Services Pipelines Expansions STITCH CONCEPTS
  • 28. #MDBE17 RULES: DECLARATIVE ACCESS CONTROL • Rules control access ‒ Read ‒ Write ‒ Validate • Defined at document or field level • Add data from user, database, or external systems with expansions/pipelines • Defined with simple JSON
  • 29. #MDBE17 Atlas Customer Account Data { "owner_id": … , "balance": … , "transactions": {…}, "user_profile": {….} }Bank Teller Analys t Custome r Roles,Permissions,andSecurity Application Reporting Data Mart User Profile: “I need to access my account” Role Based: “I need to lookup transactions without seeing personal information” Aggregate Only: “I need to understand the bank’s total cash flow”
  • 30. #MDBE17 Bank Teller Analys t Custome r Atlas Customer Account Data { "owner_id": … , "balance": … , "transactions": {…}, "user_profile": {….} } Stitch user_profile (Read Rule) {”owner_id": ”%%user.id"} balance/transactions (Read Rules) { ”%or": [ {”owner_id": ”%%user.id"}, {"%%true": { "%pipeline": { "name": ”isTeller", "args": { ”User": "%%user"} } ] } { "user_id": … , "balance": … , "transactions": {…}, "user_profile": {….} }
  • 31. #MDBE17 Stitch user_profile (Read Rule) {”owner_id": ”%%user.id"} balance/transactions (Read Rules) { ”%or": [ {”owner_id": ”%%user.id"}, {"%%true": { "%pipeline": { "name": ”isTeller", "args": { ”User": "%%user"} } ] } Bank Teller Analys t Custome r Atlas Customer Account Data { "owner_id": … , "balance": … , "transactions": {…}, "user_profile": {….} } { "user_id": … , "balance": … , "transactions": {…} }
  • 32. #MDBE17 Stitch user_profile (Read Rule) {”owner_id": ”%%user.id"} balance/transactions (Read Rules) { ”%or": [ {”owner_id": ”%%user.id"}, {"%%true": { "%pipeline": { "name": ”isTeller", "args": { ”User": "%%user"} } ] } Bank Teller Analys t Custome r {Aggregated Data} Stitch Pipeline for Analysis {“$$pipeline.currentRole”: “Analyst”} Atlas Customer Account Data { "owner_id": … , "balance": … , "transactions": {…}, "user_profile": {….} }
  • 34. #MDBE17 TROUBLESHOOTING IN STITCH • Logs ‒ Track request/user/status ‒ Searchable ‒ Requests openable in Debug Console • Debug Console ‒ Execute requests to test ‒ Impersonate different users
  • 35. #MDBE17 • $1 per GB of data transferred from Stitch to client/service • Data transfer to Atlas is free • 25 GB Free per month PRICING
  • 36. #MDBE17 xx EverywhereRealtime Expand Regional footprint Available on-premise Bring any MongoDB Change Streams driven Event-based pipelines More Tools Improved Pipelines Code and Rule Versioning Debugging and Monitoring Service Extensibility WHAT’S NEXT WITH STITCH?
  • 37. #MDBE17 Add Features • Take your app to a new platform • Build a better permissions system or a separate admin portal • Add additional authentication providers Expose Data • Provide an API for safe, internal data access • Build a preciser permissions system • Create a real-time dashboard with authentication and security built-in Integrate Services • Integrate with any service or API with minimal code • Consume/action on data in real time with webhooks • Communicate with data using text, e-mail, slack, etc. Complete Backend • Build faster without boilerplate code • Easily span multiple platforms • Scale at a moments notice • Single, simplified point to manage infrastructure/logic WHERE TO USE STITCH?
  • 38. #MDBE17 • Get started at our Tutorial later today! • Building Your First App with MongoDB Stitch • 3:45 – 5:05 in Breakout Room N • Check out Stitch – stitch.mongodb.com • Check out SDKs and examples • Code at github.com/MongodbStitch • Docs at docs.mongodb.com/stitch • Ask Questions or let us know what you’re building through Intercom WHAT NOW?