SlideShare a Scribd company logo
1 of 53
Download to read offline
Aggregation Framework
Jeremy Mikola
   @jmikola
MapReduce
MapReduce
MapReduce
Extremely versatile, powerful
Intended for complex data analysis
Overkill for simple aggregation tasks
   Averages
   Summation
   Grouping
MapReduce in MongoDB
  Implemented with JavaScript
    Single-threaded
    Difficult to debug
  Concurrency
    Appearance of parallelism
    Write locks
Aggregation Framework
Aggregation Framework
Declarative (BSON, not JavaScript)
Implemented in C++
Flexible and functional
   Operation pipeline
   Computational expressions
Plays nice with sharding
Pipeline
Pipeline
 Process a stream of documents
    Original input is a collection
    Final output is a result document
 Series of operators
    Filter or transform data
    Input/output chain

p x|ge ogd|ha n1
 sa  rpmno  ed­ 
Pipeline Operators
     $ac
      mth
     $rjc
      poet
     $ru
      gop
     $nid
      uwn
     $ot
      sr
     $ii
      lmt
     $kp
      si
$match
Filter documents
Place early in the pipeline if possible
Uses existing query syntax
No geospatial operations or $ h rwee
$match
                  Matching Field Values
{                          ►    {$ac:{
                                  mth 
 tte TeGetGtb"
  il:"h ra asy,                  lnug:"usa"
                                  agae Rsin
 pgs 1,
  ae:28                         }}
 lnug:"nls"
  agae Egih
}
                                          ▼
{
 tte WradPae,
  il:"a n ec"                   {
 pgs 40
  ae:14,                         tte WradPae,
                                  il:"a n ec"
 lnug:"usa"
  agae Rsin                      pgs 40
                                  ae:14,
}                                lnug:"usa"
                                  agae Rsin
                                }

{
 tte AlsSrge"
  il:"ta hugd,
 pgs 08
  ae:18,
 lnug:"nls"
  agae Egih
}
$match
                 Matching with Query Operators
{                             ►    {$ac:{
                                     mth 
 tte TeGetGtb"
  il:"h ra asy,                     pgs  g:10 
                                     ae:{$t 00}
 pgs 1,
  ae:28                            }}
 lnug:"nls"
  agae Egih
}
                                                 ▼
{
 tte WradPae,
  il:"a n ec"                      {
 pgs 40
  ae:14,                            tte WradPae,
                                     il:"a n ec"
 lnug:"usa"
  agae Rsin                         pgs 40
                                     ae:14,
}                                   lnug:"usa"
                                     agae Rsin
                                   }

{
 tte AlsSrge"
  il:"ta hugd,                     {
 pgs 08
  ae:18,                            tte AlsSrge"
                                     il:"ta hugd,
 lnug:"nls"
  agae Egih                         pgs 08
                                     ae:18,
}                                   lnug:"nls"
                                     agae Egih
                                   }
$project
Reshape documents
Include, exclude or rename fields
Inject computed fields
Create sub-document fields
$project
                  Including and Excluding Fields
{                              ►    {$rjc:{
                                      poet 
 _d 7,
  i:35                               _d ,
                                      i:0
 tte TeGetGtb"
  il:"h ra asy,                      tte ,
                                      il:1
 IB:"715109"
  SN 9887513,                        lnug:1
                                      agae 
 aalbe re
  vial:tu,                          }}
 pgs 1,
  ae:28
 sbet:[
  ujcs 
  "ogIln"
   Ln sad,                                         ▼
  "e ok,
   NwYr"
  "90"
   12s                               {
 ]
  ,                                   tte TeGetGtb"
                                       il:"h ra asy,
 lnug:"nls"
  agae Egih                           lnug:"nls"
                                       agae Egih
}                                    }
$project
              Renaming and Computing Fields
{                          ►    {$rjc:{
                                  poet 
 _d 7,
  i:35                           upril:{
                                  peTte 
 tte TeGetGtb"
  il:"h ra asy,                   $ope:"tte
                                   tUpr $il"
 IB:"715109"
  SN 9887513,                    }
                                  ,
 aalbe re
  vial:tu,                       ln:"lnug"
                                  ag $agae
 pgs 1,
  ae:28                         }}
 sbet:[
  ujcs 
  "ogIln"
   Ln sad,
  "e ok,
   NwYr"                                      ▼
  "90"
   12s
 ]
  ,                             {
 lnug:"nls"
  agae Egih                      _d 7,
                                  i:35
}                                tte TEGETGTB"
                                  il:"H RA ASY,
                                 ln:"nls"
                                  ag Egih
                                }
$project
                  Creating Sub-document Fields
{                             ►    {$rjc:{
                                     poet 
 _d 7,
  i:35                              tte ,
                                     il:1
 tte TeGetGtb"
  il:"h ra asy,                     sas 
                                     tt:{
 IB:"715109"
  SN 9887513,                        pgs $ae"
                                      ae:"pgs,
 aalbe re
  vial:tu,                           lnug:"lnug"
                                      agae $agae,
 pgs 1,
  ae:28                             }
                                     
 sbet:[
  ujcs                             }}
  "ogIln"
   Ln sad,
  "e ok,
   NwYr"
  "90"
   12s                                           ▼
 ]
  ,
 lnug:"nls"
  agae Egih                        {
}                                   _d 7,
                                     i:35
                                    tte TeGetGtb"
                                     il:"h ra asy,
                                    sas 
                                     tt:{
                                     pgs 1,
                                      ae:28
                                     lnug:"nls"
                                      agae Egih
                                    }
                                     
                                   }
$group
Group documents by an ID
   Field path reference
   Object with multiple references
   Constant value
Other output fields are computed
   $a,$i,$v,$u
    mx mn ag sm
    adoe, ps
   $ d T S t$ u h
   $is,$at
    frt ls
Processes all data in memory
$group
                  Calculating an Average
{                          ►    {$ru:{
                                  gop 
 tte TeGetGtb"
  il:"h ra asy,                  _d $agae,
                                  i:"lnug"
 pgs 1,
  ae:28                          agae:{$v:"pgs 
                                  vPgs  ag $ae"}
 lnug:"nls"
  agae Egih                     }}
}

{
                                             ▼
 tte WradPae,
  il:"a n ec"
 pgs 40
  ae:14,                         {
 lnug:"usa"
  agae Rsin                       _d Rsin,
                                   i:"usa"
}                                 agae:14
                                   vPgs 40
                                 }

{
 tte AlsSrge"
  il:"ta hugd,                   {
 pgs 08
  ae:18,                          _d Egih,
                                   i:"nls"
 lnug:"nls"
  agae Egih                       agae:63
                                   vPgs 5
}                                }
$group
                 Summating Fields and Counting
{                             ►    {$ru:{
                                     gop 
 tte TeGetGtb"
  il:"h ra asy,                     _d $agae,
                                     i:"lnug"
 pgs 1,
  ae:28                             nmils  sm  ,
                                     uTte:{$u:1}
 lnug:"nls"
  agae Egih                         smae:{$u:"pgs 
                                     uPgs  sm $ae"}
}                                  }}

{
 tte WradPae,
  il:"a n ec"
                                                 ▼
 pgs 40
  ae:14,
 lnug:"usa"
  agae Rsin                        {
}                                   _d Rsin,
                                     i:"usa"
                                    nmils ,
                                     uTte:1
                                    smae:14
                                     uPgs 40
{                                  }
 tte AlsSrge"
  il:"ta hugd,
 pgs 08
  ae:18,
 lnug:"nls"
  agae Egih                        {
}                                   _d Egih,
                                     i:"nls"
                                    nmils ,
                                     uTte:2
                                    smae:10
                                     uPgs 36
                                   }
$group
                  Collecting Distinct Values
{                            ►    {$ru:{
                                    gop 
 tte TeGetGtb"
  il:"h ra asy,                    _d $agae,
                                    i:"lnug"
 pgs 1,
  ae:28                            tte:{$dTSt $il"}
                                    ils  adoe:"tte 
 lnug:"nls"
  agae Egih                       }}
}

{
                                               ▼
 tte WradPae,
  il:"a n ec"
 pgs 40
  ae:14,                           {
 lnug:"usa"
  agae Rsin                         _d Rsin,
                                     i:"usa"
}                                   tte:["a n ec"]
                                     ils  WradPae 
                                   }

{
 tte AlsSrge"
  il:"ta hugd,                     {
 pgs 08
  ae:18,                            _d Egih,
                                     i:"nls"
 lnug:"nls"
  agae Egih                         tte:[
                                     ils 
}                                    "ta hugd,
                                      AlsSrge"
                                     "h ra asy
                                      TeGetGtb"
                                    ]
                                     
                                   }
$unwind
Operate on an array field
Yield documents for each array value
   Nothing for absent or empty fields
   Error for non-array fields
Complements $ r u
                gop
$unwind
            Yielding Multiple Documents from One
{                           ►    {$nid $ujcs 
                                   uwn:"sbet"}
 tte TeGetGtb"
  il:"h ra asy,
 IB:"715109"
  SN 9887513,
 sbet:[
  ujcs                                         ▼
  "ogIln"
   Ln sad,
  "e ok,
   NwYr"                          {
  "90"
   12s                             tte TeGetGtb"
                                    il:"h ra asy,
 ]
                                   IB:"715109"
                                    SN 9887513,
}                                  sbet:"ogIln"
                                    ujcs Ln sad
                                  }

                                  {
                                   tte TeGetGtb"
                                    il:"h ra asy,
                                   IB:"715109"
                                    SN 9887513,
                                   sbet:"e ok
                                    ujcs NwYr"
                                  }

                                  {
                                   tte TeGetGtb"
                                    il:"h ra asy,
                                   IB:"715109"
                                    SN 9887513,
                                   sbet:"90"
                                    ujcs 12s
                                  }
$sort
Sort documents by one or more fields
Uses familiar cursor format
Waits for earlier pipeline operator to return
In-memory unless early and indexed
$sort
                Sort All Documents in the Pipeline
{tte TeGetGtb"}
  il:"h ra asy                 ►     {$ot  il:1}
                                       sr:{tte  }

{tte BaeNwWrd 
  il:"rv e ol"}
                                                     ▼
{tte TeGae fWah 
  il:"h rpso rt"}                    {tte Aia am 
                                       il:"nmlFr"}

{tte Aia am 
  il:"nmlFr"}                        {tte BaeNwWrd 
                                       il:"rv e ol"}

{tte Lr fteFis 
  il:"odo h le"}                     {tte Fhehi 5"}
                                       il:"arnet41 

{tte FtesadSn"}
  il:"ahr n os                       {tte FtesadSn"}
                                       il:"ahr n os 

{tte IvsbeMn 
  il:"niil a"}                       {tte IvsbeMn 
                                       il:"niil a"}

{tte Fhehi 5"}
  il:"arnet41                        {tte Lr fteFis 
                                       il:"odo h le"}

                                     {tte TeGae fWah 
                                       il:"h rpso rt"}

                                     {tte TeGetGtb"}
                                       il:"h ra asy 
$limit
            Limit Documents through the Pipeline
{tte TeGetGtb"}
  il:"h ra asy              ►    {$ii:5}
                                   lmt  

{tte BaeNwWrd 
  il:"rv e ol"}
                                               ▼
{tte TeGae fWah 
  il:"h rpso rt"}                 {tte TeGetGtb"}
                                    il:"h ra asy 

{tte Aia am 
  il:"nmlFr"}                     {tte BaeNwWrd 
                                    il:"rv e ol"}

{tte Lr fteFis 
  il:"odo h le"}                  {tte TeGae fWah 
                                    il:"h rpso rt"}

{tte FtesadSn"}
  il:"ahr n os                    {tte Aia am 
                                    il:"nmlFr"}

{tte IvsbeMn 
  il:"niil a"}                    {tte Lr fteFis 
                                    il:"odo h le"}

{tte Fhehi 5"}
  il:"arnet41 
$skip
                Skip Over Documents in the Pipeline
{tte TeGetGtb"}
  il:"h ra asy                  ►    {$kp  
                                       si:5}

{tte BaeNwWrd 
  il:"rv e ol"}
                                                      ▼
{tte TeGae fWah 
  il:"h rpso rt"}                    {tte FtesadSn"}
                                       il:"ahr n os 

{tte Aia am 
  il:"nmlFr"}                        {tte IvsbeMn 
                                       il:"niil a"}

{tte Lr fteFis 
  il:"odo h le"}                     {tte Fhehi 5"}
                                       il:"arnet41 

{tte FtesadSn"}
  il:"ahr n os 

{tte IvsbeMn 
  il:"niil a"}

{tte Fhehi 5"}
  il:"arnet41 
Extending the Framework
Adding new pipeline operators, expressions
$ u and $ e for output control
 ot         te
  https://jira.mongodb.org/browse/SERVER-3253
Expressions
Expressions
Return computed values
Used with $ r j c and $ r u
           poet        gop
May be nested
Boolean Operators
Input array of one or more values
   $n,$r
    ad o
   Short-circuit logic
Inverse values with $ ont
BSON standard for converting non-booleans
   n l , u d f n dzero values → f l e
    ul neie,                            as
   Non-zero values, strings, dates, objects → t u
                                               re
Comparison Operators
Compare numbers, strings, and dates
Input array with two operands
   $ m , $ q$ e
    cp e, n
   $ t$ t , $ t$ t
    g, ge l, le
Arithmetic Operators
Input array of one or more numbers
   $d,$utpy
    ad mlil
Input array of two operands
    sbrc, dvd, md
   $ u t a t$ i i e$ o
String Operators
$ t c s c pcase-insensitive comparison
 sraem
   $ m is case-sensitive
    cp
$ o o e and $ o p e case change
 tLwr            tUpr
$ u s rfor sub-string extraction
 sbt
Not encoding aware
Assumes Latin alphabet
Date Operators
Extract values from date objects
   $ a O Y a , $ a O M n h$ a O W e
    dyfer dyfot, dyfek
   $ e r$ o t , $ e k
    ya, mnh we
    hu, mnt, scn
   $ o r$ i u e$ e o d
Conditional Operators
  $ o dternary operator
   cn
  $ful
   iNl
Usage
Usage
c l e t o . g r g t ( method
 olcinageae)
  Mongo shell
  Most drivers
a g e a edatabase command
 grgt
Result limited by BSON document size
Collection Method
d.ok.grgt(
 bbosageae[
 {$rjc:{lnug:1},
   poet  agae  }
 {$ru:{_d $agae,nmils  sm  }
   gop  i:"lnug" uTte:{$u:1}}
])


                      ▼
{
 rsl:[
  eut 
  {_d Rsin,nmils  ,
    i:"usa" uTte:1}
  {_d Egih,nmils  
    i:"nls" uTte:2}
 ]
  ,
 o:1
  k 
}
Database Command
d.uCmad{
 brnomn(
 ageae bos,
  grgt:"ok"
 ppln:[
  ieie 
  {$rjc:{lnug:1},
    poet  agae  }
  {$ru:{_d $agae,nmils  sm  }
    gop  i:"lnug" uTte:{$u:1}}
 ]
  
})


                      ▼
{
 rsl:[
  eut 
  {_d Rsin,nmils  ,
    i:"usa" uTte:1}
  {_d Egih,nmils  
    i:"nls" uTte:2}
 ]
  ,
 o:1
  k 
}
Optimization
Early Filtering
[
 {$ac: {/ ac rtra    * }
   mth   *mthciei     /},
 {$ot  {/ otmthddcmns* }
   sr:   *sr ace ouet /},
 {$ii: {/ ii ouetsra * }
   lmt   *lmtdcmn tem /},
 {$ru: {/ ru yafed   * }
   gop   *gopb  il    /},
 {$ot  {/ otb optdvle* }
   sr:   *sr ycmue au /},
 {$rjc:{/ ehp eut    * }
   poet  *rsaersl     /}
]
Early Filtering
d.olcin
 bcleto
 .id{/ ac rtra    * )
  fn( *mthciei     /}
 .ot{/ otmthddcmns* )
  sr( *sr ace ouet /}
 .ii(/ ii ouetsra * )
  lmt *lmtdcmn tem / 


                   ▼
[
 {$ru: {/ ru yafed   * }
   gop   *gopb  il    /},
 {$ot  {/ otb optdvle* }
   sr:   *sr ycmue au /},
 {$rjc:{/ ehp eut    * }
   poet  *rsaersl     /}
]
Memory Usage
$ r u and $ o tentirely in-memory
 gop         sr
Operation memory usage limits
  Warning at >5%
  Error at >10%
Sharding
Sharding
Split the pipeline at first $ r u or $ o t
                             gop      sr
   Shards execute pipeline before that point
   mongos merges results and continues
Early $ a c may excuse shards
        mth
CPU and memory implications for mongos
Sharding
[
 {$rjc:{/ eetfed   /},
   poet  *slc ils  * }
 {$ot  {/ otb ietm /},
   sr:   *sr ytmsap* }
 {$ru: {/ ru ymnt  /},
   gop   *gopb iue * }
 {$ot  {/ otb ietm /},
   sr:   *sr ytmsap* }
 {$rjc:{/ ehp eut  /}
   poet  *rsaersl  * }
]
Sharding
shard1        shard2        shard3
$rjc
 poet         $rjc
              poet          $rjc
                             poet
$ot
 sr           $ot
              sr            $ot
                             sr


         ↘      ↓       ↙
              mongos
              $ru
              gop
              $ot
              sr
              $rjc
              poet


                ↓
              Result
Demo Time
Thanks!
mongodb.org/downloads
docs.mongodb.org/manual/aggregation


           Questions?
Photo Credits
http://dilbert.com/strips/comic/2012-09-05
Introduction to the New Aggregation Framework

More Related Content

What's hot

Query for json databases
Query for json databasesQuery for json databases
Query for json databasesBinh Le
 
The Ring programming language version 1.8 book - Part 75 of 202
The Ring programming language version 1.8 book - Part 75 of 202The Ring programming language version 1.8 book - Part 75 of 202
The Ring programming language version 1.8 book - Part 75 of 202Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 73 of 196
The Ring programming language version 1.7 book - Part 73 of 196The Ring programming language version 1.7 book - Part 73 of 196
The Ring programming language version 1.7 book - Part 73 of 196Mahmoud Samir Fayed
 
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB
 
C++ adt c++ implementations
C++   adt c++ implementationsC++   adt c++ implementations
C++ adt c++ implementationsRex Mwamba
 
Schema Design by Chad Tindel, Solution Architect, 10gen
Schema Design  by Chad Tindel, Solution Architect, 10genSchema Design  by Chad Tindel, Solution Architect, 10gen
Schema Design by Chad Tindel, Solution Architect, 10genMongoDB
 
Практическое применения Akka Streams
Практическое применения Akka StreamsПрактическое применения Akka Streams
Практическое применения Akka StreamsAlexey Romanchuk
 
«Практическое применение Akka Streams» — Алексей Романчук, 2ГИС
«Практическое применение Akka Streams» — Алексей Романчук, 2ГИС«Практическое применение Akka Streams» — Алексей Романчук, 2ГИС
«Практическое применение Akka Streams» — Алексей Романчук, 2ГИС2ГИС Технологии
 
Tips and Tricks of Developing .NET Application
Tips and Tricks of Developing .NET ApplicationTips and Tricks of Developing .NET Application
Tips and Tricks of Developing .NET ApplicationJoni
 
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB
 
اسئلة و اجوبة للصغار و لا يستغني عنها الكبار
اسئلة و اجوبة للصغار و لا يستغني عنها الكباراسئلة و اجوبة للصغار و لا يستغني عنها الكبار
اسئلة و اجوبة للصغار و لا يستغني عنها الكبارغايتي الجنة
 
Shift Remote FRONTEND: Reactivity in Vue.JS 3 - Marko Boskovic (Barrage)
Shift Remote FRONTEND: Reactivity in Vue.JS 3 - Marko Boskovic (Barrage)Shift Remote FRONTEND: Reactivity in Vue.JS 3 - Marko Boskovic (Barrage)
Shift Remote FRONTEND: Reactivity in Vue.JS 3 - Marko Boskovic (Barrage)Shift Conference
 
Java/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
Java/Scala Lab: Slava Schmidt - Introduction to Reactive StreamsJava/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
Java/Scala Lab: Slava Schmidt - Introduction to Reactive StreamsGeeksLab Odessa
 
Invertible-syntax 入門
Invertible-syntax 入門Invertible-syntax 入門
Invertible-syntax 入門Hiromi Ishii
 

What's hot (17)

Query for json databases
Query for json databasesQuery for json databases
Query for json databases
 
The Ring programming language version 1.8 book - Part 75 of 202
The Ring programming language version 1.8 book - Part 75 of 202The Ring programming language version 1.8 book - Part 75 of 202
The Ring programming language version 1.8 book - Part 75 of 202
 
The Ring programming language version 1.7 book - Part 73 of 196
The Ring programming language version 1.7 book - Part 73 of 196The Ring programming language version 1.7 book - Part 73 of 196
The Ring programming language version 1.7 book - Part 73 of 196
 
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
 
C++
C++C++
C++
 
Sensmon couchdb
Sensmon couchdbSensmon couchdb
Sensmon couchdb
 
C++ adt c++ implementations
C++   adt c++ implementationsC++   adt c++ implementations
C++ adt c++ implementations
 
Schema Design by Chad Tindel, Solution Architect, 10gen
Schema Design  by Chad Tindel, Solution Architect, 10genSchema Design  by Chad Tindel, Solution Architect, 10gen
Schema Design by Chad Tindel, Solution Architect, 10gen
 
Практическое применения Akka Streams
Практическое применения Akka StreamsПрактическое применения Akka Streams
Практическое применения Akka Streams
 
«Практическое применение Akka Streams» — Алексей Романчук, 2ГИС
«Практическое применение Akka Streams» — Алексей Романчук, 2ГИС«Практическое применение Akka Streams» — Алексей Романчук, 2ГИС
«Практическое применение Akka Streams» — Алексей Романчук, 2ГИС
 
Tips and Tricks of Developing .NET Application
Tips and Tricks of Developing .NET ApplicationTips and Tricks of Developing .NET Application
Tips and Tricks of Developing .NET Application
 
Programs
ProgramsPrograms
Programs
 
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
 
اسئلة و اجوبة للصغار و لا يستغني عنها الكبار
اسئلة و اجوبة للصغار و لا يستغني عنها الكباراسئلة و اجوبة للصغار و لا يستغني عنها الكبار
اسئلة و اجوبة للصغار و لا يستغني عنها الكبار
 
Shift Remote FRONTEND: Reactivity in Vue.JS 3 - Marko Boskovic (Barrage)
Shift Remote FRONTEND: Reactivity in Vue.JS 3 - Marko Boskovic (Barrage)Shift Remote FRONTEND: Reactivity in Vue.JS 3 - Marko Boskovic (Barrage)
Shift Remote FRONTEND: Reactivity in Vue.JS 3 - Marko Boskovic (Barrage)
 
Java/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
Java/Scala Lab: Slava Schmidt - Introduction to Reactive StreamsJava/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
Java/Scala Lab: Slava Schmidt - Introduction to Reactive Streams
 
Invertible-syntax 入門
Invertible-syntax 入門Invertible-syntax 入門
Invertible-syntax 入門
 

Viewers also liked

S01 e01 schema-design
S01 e01 schema-designS01 e01 schema-design
S01 e01 schema-designMongoDB
 
MongoDB, Cloudformation and Chef
MongoDB, Cloudformation and ChefMongoDB, Cloudformation and Chef
MongoDB, Cloudformation and ChefMongoDB
 
Challenges in an E-Commerce Catalogue with SQL; How Mongo helps
Challenges in an E-Commerce Catalogue with SQL; How Mongo helpsChallenges in an E-Commerce Catalogue with SQL; How Mongo helps
Challenges in an E-Commerce Catalogue with SQL; How Mongo helpsMongoDB
 
Webinar: Revolutionizing Application Development with MongoDB
Webinar: Revolutionizing Application Development with MongoDBWebinar: Revolutionizing Application Development with MongoDB
Webinar: Revolutionizing Application Development with MongoDBMongoDB
 
Back tobasicswebinar part6-rev.
Back tobasicswebinar part6-rev.Back tobasicswebinar part6-rev.
Back tobasicswebinar part6-rev.MongoDB
 
Mongo db bangalore
Mongo db bangaloreMongo db bangalore
Mongo db bangaloreMongoDB
 
Partner Webinar: Deliver Big Data Apps Faster With Informatica & MongoDB
Partner Webinar: Deliver Big Data Apps Faster With Informatica & MongoDBPartner Webinar: Deliver Big Data Apps Faster With Informatica & MongoDB
Partner Webinar: Deliver Big Data Apps Faster With Informatica & MongoDBMongoDB
 
Schema Design
Schema DesignSchema Design
Schema DesignMongoDB
 
What's New in MongoDB 2.6
What's New in MongoDB 2.6What's New in MongoDB 2.6
What's New in MongoDB 2.6MongoDB
 
MongoDB and AWS Best Practices
MongoDB and AWS Best PracticesMongoDB and AWS Best Practices
MongoDB and AWS Best PracticesMongoDB
 
Schema Design
Schema DesignSchema Design
Schema DesignMongoDB
 
Introduction to MongoDB and Ruby
Introduction to MongoDB and RubyIntroduction to MongoDB and Ruby
Introduction to MongoDB and RubyMongoDB
 
MongoDB and AWS: Integrations
MongoDB and AWS: IntegrationsMongoDB and AWS: Integrations
MongoDB and AWS: IntegrationsMongoDB
 
Webinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBWebinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBMongoDB
 

Viewers also liked (14)

S01 e01 schema-design
S01 e01 schema-designS01 e01 schema-design
S01 e01 schema-design
 
MongoDB, Cloudformation and Chef
MongoDB, Cloudformation and ChefMongoDB, Cloudformation and Chef
MongoDB, Cloudformation and Chef
 
Challenges in an E-Commerce Catalogue with SQL; How Mongo helps
Challenges in an E-Commerce Catalogue with SQL; How Mongo helpsChallenges in an E-Commerce Catalogue with SQL; How Mongo helps
Challenges in an E-Commerce Catalogue with SQL; How Mongo helps
 
Webinar: Revolutionizing Application Development with MongoDB
Webinar: Revolutionizing Application Development with MongoDBWebinar: Revolutionizing Application Development with MongoDB
Webinar: Revolutionizing Application Development with MongoDB
 
Back tobasicswebinar part6-rev.
Back tobasicswebinar part6-rev.Back tobasicswebinar part6-rev.
Back tobasicswebinar part6-rev.
 
Mongo db bangalore
Mongo db bangaloreMongo db bangalore
Mongo db bangalore
 
Partner Webinar: Deliver Big Data Apps Faster With Informatica & MongoDB
Partner Webinar: Deliver Big Data Apps Faster With Informatica & MongoDBPartner Webinar: Deliver Big Data Apps Faster With Informatica & MongoDB
Partner Webinar: Deliver Big Data Apps Faster With Informatica & MongoDB
 
Schema Design
Schema DesignSchema Design
Schema Design
 
What's New in MongoDB 2.6
What's New in MongoDB 2.6What's New in MongoDB 2.6
What's New in MongoDB 2.6
 
MongoDB and AWS Best Practices
MongoDB and AWS Best PracticesMongoDB and AWS Best Practices
MongoDB and AWS Best Practices
 
Schema Design
Schema DesignSchema Design
Schema Design
 
Introduction to MongoDB and Ruby
Introduction to MongoDB and RubyIntroduction to MongoDB and Ruby
Introduction to MongoDB and Ruby
 
MongoDB and AWS: Integrations
MongoDB and AWS: IntegrationsMongoDB and AWS: Integrations
MongoDB and AWS: Integrations
 
Webinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBWebinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDB
 

More from MongoDB

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump StartMongoDB
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB
 

More from MongoDB (20)

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
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: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
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: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
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: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
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: Best Practices for Working with IoT and Time-series DataMongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
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 Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
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: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
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: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
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: From SQL to NoSQL -- Changing Your MindsetMongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
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: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
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: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
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: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
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: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
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: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
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 San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
 

Recently uploaded

Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 

Introduction to the New Aggregation Framework

  • 2.
  • 5. MapReduce Extremely versatile, powerful Intended for complex data analysis Overkill for simple aggregation tasks Averages Summation Grouping
  • 6. MapReduce in MongoDB Implemented with JavaScript Single-threaded Difficult to debug Concurrency Appearance of parallelism Write locks
  • 8. Aggregation Framework Declarative (BSON, not JavaScript) Implemented in C++ Flexible and functional Operation pipeline Computational expressions Plays nice with sharding
  • 10. Pipeline Process a stream of documents Original input is a collection Final output is a result document Series of operators Filter or transform data Input/output chain p x|ge ogd|ha n1 sa  rpmno  ed­ 
  • 11. Pipeline Operators $ac mth $rjc poet $ru gop $nid uwn $ot sr $ii lmt $kp si
  • 12. $match Filter documents Place early in the pipeline if possible Uses existing query syntax No geospatial operations or $ h rwee
  • 13. $match Matching Field Values { ► {$ac:{  mth   tte TeGetGtb"  il:"h ra asy,  lnug:"usa"  agae Rsin  pgs 1,  ae:28 }}  lnug:"nls"  agae Egih } ▼ {  tte WradPae,  il:"a n ec" {  pgs 40  ae:14,  tte WradPae,  il:"a n ec"  lnug:"usa"  agae Rsin  pgs 40  ae:14, }  lnug:"usa"  agae Rsin } {  tte AlsSrge"  il:"ta hugd,  pgs 08  ae:18,  lnug:"nls"  agae Egih }
  • 14. $match Matching with Query Operators { ► {$ac:{  mth   tte TeGetGtb"  il:"h ra asy,  pgs  g:10   ae:{$t 00}  pgs 1,  ae:28 }}  lnug:"nls"  agae Egih } ▼ {  tte WradPae,  il:"a n ec" {  pgs 40  ae:14,  tte WradPae,  il:"a n ec"  lnug:"usa"  agae Rsin  pgs 40  ae:14, }  lnug:"usa"  agae Rsin } {  tte AlsSrge"  il:"ta hugd, {  pgs 08  ae:18,  tte AlsSrge"  il:"ta hugd,  lnug:"nls"  agae Egih  pgs 08  ae:18, }  lnug:"nls"  agae Egih }
  • 15. $project Reshape documents Include, exclude or rename fields Inject computed fields Create sub-document fields
  • 16. $project Including and Excluding Fields { ► {$rjc:{  poet   _d 7,  i:35  _d ,  i:0  tte TeGetGtb"  il:"h ra asy,  tte ,  il:1  IB:"715109"  SN 9887513,  lnug:1  agae   aalbe re  vial:tu, }}  pgs 1,  ae:28  sbet:[  ujcs    "ogIln"   Ln sad, ▼   "e ok,   NwYr"   "90"   12s {  ]  ,  tte TeGetGtb"  il:"h ra asy,  lnug:"nls"  agae Egih  lnug:"nls"  agae Egih } }
  • 17. $project Renaming and Computing Fields { ► {$rjc:{  poet   _d 7,  i:35  upril:{  peTte   tte TeGetGtb"  il:"h ra asy,   $ope:"tte   tUpr $il"  IB:"715109"  SN 9887513,  }  ,  aalbe re  vial:tu,  ln:"lnug"  ag $agae  pgs 1,  ae:28 }}  sbet:[  ujcs    "ogIln"   Ln sad,   "e ok,   NwYr" ▼   "90"   12s  ]  , {  lnug:"nls"  agae Egih  _d 7,  i:35 }  tte TEGETGTB"  il:"H RA ASY,  ln:"nls"  ag Egih }
  • 18. $project Creating Sub-document Fields { ► {$rjc:{  poet   _d 7,  i:35  tte ,  il:1  tte TeGetGtb"  il:"h ra asy,  sas   tt:{  IB:"715109"  SN 9887513,   pgs $ae"   ae:"pgs,  aalbe re  vial:tu,   lnug:"lnug"   agae $agae,  pgs 1,  ae:28  }    sbet:[  ujcs  }}   "ogIln"   Ln sad,   "e ok,   NwYr"   "90"   12s ▼  ]  ,  lnug:"nls"  agae Egih { }  _d 7,  i:35  tte TeGetGtb"  il:"h ra asy,  sas   tt:{   pgs 1,   ae:28   lnug:"nls"   agae Egih  }   }
  • 19. $group Group documents by an ID Field path reference Object with multiple references Constant value Other output fields are computed $a,$i,$v,$u mx mn ag sm adoe, ps $ d T S t$ u h $is,$at frt ls Processes all data in memory
  • 20. $group Calculating an Average { ► {$ru:{  gop   tte TeGetGtb"  il:"h ra asy,  _d $agae,  i:"lnug"  pgs 1,  ae:28  agae:{$v:"pgs   vPgs  ag $ae"}  lnug:"nls"  agae Egih }} } { ▼  tte WradPae,  il:"a n ec"  pgs 40  ae:14, {  lnug:"usa"  agae Rsin  _d Rsin,  i:"usa" }  agae:14  vPgs 40 } {  tte AlsSrge"  il:"ta hugd, {  pgs 08  ae:18,  _d Egih,  i:"nls"  lnug:"nls"  agae Egih  agae:63  vPgs 5 } }
  • 21. $group Summating Fields and Counting { ► {$ru:{  gop   tte TeGetGtb"  il:"h ra asy,  _d $agae,  i:"lnug"  pgs 1,  ae:28  nmils  sm  ,  uTte:{$u:1}  lnug:"nls"  agae Egih  smae:{$u:"pgs   uPgs  sm $ae"} } }} {  tte WradPae,  il:"a n ec" ▼  pgs 40  ae:14,  lnug:"usa"  agae Rsin { }  _d Rsin,  i:"usa"  nmils ,  uTte:1  smae:14  uPgs 40 { }  tte AlsSrge"  il:"ta hugd,  pgs 08  ae:18,  lnug:"nls"  agae Egih { }  _d Egih,  i:"nls"  nmils ,  uTte:2  smae:10  uPgs 36 }
  • 22. $group Collecting Distinct Values { ► {$ru:{  gop   tte TeGetGtb"  il:"h ra asy,  _d $agae,  i:"lnug"  pgs 1,  ae:28  tte:{$dTSt $il"}  ils  adoe:"tte   lnug:"nls"  agae Egih }} } { ▼  tte WradPae,  il:"a n ec"  pgs 40  ae:14, {  lnug:"usa"  agae Rsin  _d Rsin,  i:"usa" }  tte:["a n ec"]  ils  WradPae  } {  tte AlsSrge"  il:"ta hugd, {  pgs 08  ae:18,  _d Egih,  i:"nls"  lnug:"nls"  agae Egih  tte:[  ils  }   "ta hugd,   AlsSrge"   "h ra asy   TeGetGtb"  ]   }
  • 23. $unwind Operate on an array field Yield documents for each array value Nothing for absent or empty fields Error for non-array fields Complements $ r u gop
  • 24. $unwind Yielding Multiple Documents from One { ► {$nid $ujcs   uwn:"sbet"}  tte TeGetGtb"  il:"h ra asy,  IB:"715109"  SN 9887513,  sbet:[  ujcs  ▼   "ogIln"   Ln sad,   "e ok,   NwYr" {   "90"   12s  tte TeGetGtb"  il:"h ra asy,  ]    IB:"715109"  SN 9887513, }  sbet:"ogIln"  ujcs Ln sad } {  tte TeGetGtb"  il:"h ra asy,  IB:"715109"  SN 9887513,  sbet:"e ok  ujcs NwYr" } {  tte TeGetGtb"  il:"h ra asy,  IB:"715109"  SN 9887513,  sbet:"90"  ujcs 12s }
  • 25. $sort Sort documents by one or more fields Uses familiar cursor format Waits for earlier pipeline operator to return In-memory unless early and indexed
  • 26. $sort Sort All Documents in the Pipeline {tte TeGetGtb"}  il:"h ra asy  ► {$ot  il:1}  sr:{tte  } {tte BaeNwWrd   il:"rv e ol"} ▼ {tte TeGae fWah   il:"h rpso rt"} {tte Aia am   il:"nmlFr"} {tte Aia am   il:"nmlFr"} {tte BaeNwWrd   il:"rv e ol"} {tte Lr fteFis   il:"odo h le"} {tte Fhehi 5"}  il:"arnet41  {tte FtesadSn"}  il:"ahr n os  {tte FtesadSn"}  il:"ahr n os  {tte IvsbeMn   il:"niil a"} {tte IvsbeMn   il:"niil a"} {tte Fhehi 5"}  il:"arnet41  {tte Lr fteFis   il:"odo h le"} {tte TeGae fWah   il:"h rpso rt"} {tte TeGetGtb"}  il:"h ra asy 
  • 27. $limit Limit Documents through the Pipeline {tte TeGetGtb"}  il:"h ra asy  ► {$ii:5}  lmt   {tte BaeNwWrd   il:"rv e ol"} ▼ {tte TeGae fWah   il:"h rpso rt"} {tte TeGetGtb"}  il:"h ra asy  {tte Aia am   il:"nmlFr"} {tte BaeNwWrd   il:"rv e ol"} {tte Lr fteFis   il:"odo h le"} {tte TeGae fWah   il:"h rpso rt"} {tte FtesadSn"}  il:"ahr n os  {tte Aia am   il:"nmlFr"} {tte IvsbeMn   il:"niil a"} {tte Lr fteFis   il:"odo h le"} {tte Fhehi 5"}  il:"arnet41 
  • 28. $skip Skip Over Documents in the Pipeline {tte TeGetGtb"}  il:"h ra asy  ► {$kp    si:5} {tte BaeNwWrd   il:"rv e ol"} ▼ {tte TeGae fWah   il:"h rpso rt"} {tte FtesadSn"}  il:"ahr n os  {tte Aia am   il:"nmlFr"} {tte IvsbeMn   il:"niil a"} {tte Lr fteFis   il:"odo h le"} {tte Fhehi 5"}  il:"arnet41  {tte FtesadSn"}  il:"ahr n os  {tte IvsbeMn   il:"niil a"} {tte Fhehi 5"}  il:"arnet41 
  • 29. Extending the Framework Adding new pipeline operators, expressions $ u and $ e for output control ot te https://jira.mongodb.org/browse/SERVER-3253
  • 31. Expressions Return computed values Used with $ r j c and $ r u poet gop May be nested
  • 32. Boolean Operators Input array of one or more values $n,$r ad o Short-circuit logic Inverse values with $ ont BSON standard for converting non-booleans n l , u d f n dzero values → f l e ul neie, as Non-zero values, strings, dates, objects → t u re
  • 33. Comparison Operators Compare numbers, strings, and dates Input array with two operands $ m , $ q$ e cp e, n $ t$ t , $ t$ t g, ge l, le
  • 34. Arithmetic Operators Input array of one or more numbers $d,$utpy ad mlil Input array of two operands sbrc, dvd, md $ u t a t$ i i e$ o
  • 35. String Operators $ t c s c pcase-insensitive comparison sraem $ m is case-sensitive cp $ o o e and $ o p e case change tLwr tUpr $ u s rfor sub-string extraction sbt Not encoding aware Assumes Latin alphabet
  • 36. Date Operators Extract values from date objects $ a O Y a , $ a O M n h$ a O W e dyfer dyfot, dyfek $ e r$ o t , $ e k ya, mnh we hu, mnt, scn $ o r$ i u e$ e o d
  • 37. Conditional Operators $ o dternary operator cn $ful iNl
  • 38. Usage
  • 39. Usage c l e t o . g r g t ( method olcinageae) Mongo shell Most drivers a g e a edatabase command grgt Result limited by BSON document size
  • 40. Collection Method d.ok.grgt( bbosageae[  {$rjc:{lnug:1},   poet  agae  }  {$ru:{_d $agae,nmils  sm  }   gop  i:"lnug" uTte:{$u:1}} ]) ▼ {  rsl:[  eut    {_d Rsin,nmils  ,    i:"usa" uTte:1}   {_d Egih,nmils      i:"nls" uTte:2}  ]  ,  o:1  k  }
  • 41. Database Command d.uCmad{ brnomn(  ageae bos,  grgt:"ok"  ppln:[  ieie    {$rjc:{lnug:1},    poet  agae  }   {$ru:{_d $agae,nmils  sm  }    gop  i:"lnug" uTte:{$u:1}}  ]   }) ▼ {  rsl:[  eut    {_d Rsin,nmils  ,    i:"usa" uTte:1}   {_d Egih,nmils      i:"nls" uTte:2}  ]  ,  o:1  k  }
  • 43. Early Filtering [  {$ac: {/ ac rtra    * }   mth   *mthciei     /},  {$ot  {/ otmthddcmns* }   sr:   *sr ace ouet /},  {$ii: {/ ii ouetsra * }   lmt   *lmtdcmn tem /},  {$ru: {/ ru yafed   * }   gop   *gopb  il    /},  {$ot  {/ otb optdvle* }   sr:   *sr ycmue au /},  {$rjc:{/ ehp eut    * }   poet  *rsaersl     /} ]
  • 44. Early Filtering d.olcin bcleto  .id{/ ac rtra    * )  fn( *mthciei     /}  .ot{/ otmthddcmns* )  sr( *sr ace ouet /}  .ii(/ ii ouetsra * )  lmt *lmtdcmn tem /  ▼ [  {$ru: {/ ru yafed   * }   gop   *gopb  il    /},  {$ot  {/ otb optdvle* }   sr:   *sr ycmue au /},  {$rjc:{/ ehp eut    * }   poet  *rsaersl     /} ]
  • 45. Memory Usage $ r u and $ o tentirely in-memory gop sr Operation memory usage limits Warning at >5% Error at >10%
  • 47. Sharding Split the pipeline at first $ r u or $ o t gop sr Shards execute pipeline before that point mongos merges results and continues Early $ a c may excuse shards mth CPU and memory implications for mongos
  • 48. Sharding [  {$rjc:{/ eetfed   /},   poet  *slc ils  * }  {$ot  {/ otb ietm /},   sr:   *sr ytmsap* }  {$ru: {/ ru ymnt  /},   gop   *gopb iue * }  {$ot  {/ otb ietm /},   sr:   *sr ytmsap* }  {$rjc:{/ ehp eut  /}   poet  *rsaersl  * } ]
  • 49. Sharding shard1 shard2 shard3 $rjc poet $rjc poet $rjc poet $ot sr $ot sr $ot sr ↘ ↓ ↙ mongos $ru gop $ot sr $rjc poet ↓ Result