<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://nosqlzoo.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andr3w</id>
	<title>NoSQLZoo - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://nosqlzoo.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andr3w"/>
	<link rel="alternate" type="text/html" href="https://nosqlzoo.net/wiki/Special:Contributions/Andr3w"/>
	<updated>2026-04-17T01:37:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=NoSQL_Zoo&amp;diff=1460</id>
		<title>NoSQL Zoo</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=NoSQL_Zoo&amp;diff=1460"/>
		<updated>2025-03-29T21:58:02Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Learn NoSQL using MongoDB.&lt;br /&gt;
&amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  What is the capital of France?&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne({name: &amp;quot;France&amp;quot;}).capital;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{TopTenTips}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;min-height:25em&amp;quot;&amp;gt;&lt;br /&gt;
==Tutorials: Learn NoSQL in stages==&lt;br /&gt;
&lt;br /&gt;
===MongoDB===&lt;br /&gt;
; 1 [[FIND Tutorial|FIND Tutorial]]:Using Find.&lt;br /&gt;
; 2 [[AGGREGATE Tutorial|AGGREGATE Tutorial]]:In which we query the world collection and make use of aggregate functions. (extra: [[AGGREGATE Movies Tutorial|AGGREGATE Movies Tutorial]])&lt;br /&gt;
; 3 [[MAPREDUCE Tutorial]]:Using MapReduce.&lt;br /&gt;
; 4 [[MAPREDUCE Elite]]:MapReduce questions using the Elite Dangerous dataset.&lt;br /&gt;
===Neo4j===&lt;br /&gt;
; 1 [[Space_Race/MATCH_Tutorial|MATCH Tutorial]]: Using MATCH&lt;br /&gt;
; 2 [[Space_Race/Relationships_Tutorial|Relationships Tutorial]]: Understanding Relationships&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reference: How to...==&lt;br /&gt;
; [[AGGREGATE examples | AGGREGATE Examples]]&lt;br /&gt;
; [[Find|FIND]]&lt;br /&gt;
; [[FIND Examples]]&lt;br /&gt;
; [[JavaScript: Fundamentals]]&lt;br /&gt;
; [[JavaScript: Computed Properties]]&lt;br /&gt;
; [[MapReduce | MAPREDUCE]]&lt;br /&gt;
; [[Elite Document Structure|NOSQLZOO: &#039;elite&#039; dataset schema]]&lt;br /&gt;
; [[RegEx Pattern Matching]]&lt;br /&gt;
&lt;br /&gt;
==MongoDB resources==&lt;br /&gt;
;Manuals: [http://docs.mongodb.org/manual/ MongoDB Documentation] [https://github.com/mongodb/docs MongoDB Documentation GitHub]&amp;lt;br/&amp;gt;[https://docs.python.org/3/ Python 3 Documentation] [http://api.mongodb.org/python/current/ PyMongo API Documentation]&amp;lt;br/&amp;gt; Karl Seguin&#039;s [http://openmymind.net/mongodb.pdf The Little MongoDB Book]&lt;br /&gt;
&lt;br /&gt;
{{Acknowledgements}}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.css&amp;diff=1459</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.css&amp;diff=1459"/>
		<updated>2025-03-29T21:56:31Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#tagline,#mw-redirectedfrom {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-cookiewarning-container {&lt;br /&gt;
    position: static !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CodeMirror */&lt;br /&gt;
/*---------------------------------------------------------------*/&lt;br /&gt;
/* BASICS */&lt;br /&gt;
 .CodeMirror {&lt;br /&gt;
    /* Set height, width, borders, and global font properties here */&lt;br /&gt;
     font-family: monospace;&lt;br /&gt;
     height: auto!important;&lt;br /&gt;
     color: black;&lt;br /&gt;
     direction: ltr;&lt;br /&gt;
     border-width: 1px 1px 1px 0px;&lt;br /&gt;
     border-color: grey;&lt;br /&gt;
     border-style: solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 .CodeMirror, .CodeMirror-scroll, .CodeMirror-gutters {&lt;br /&gt;
       min-height: 150px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* PADDING */&lt;br /&gt;
 .CodeMirror-lines {&lt;br /&gt;
     padding: 4px 0;&lt;br /&gt;
    /* Vertical padding around content */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror pre {&lt;br /&gt;
     padding: 0 4px;&lt;br /&gt;
    /* Horizontal padding of content */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {&lt;br /&gt;
     background-color: white;&lt;br /&gt;
    /* The little square between H and V scrollbars */&lt;br /&gt;
}&lt;br /&gt;
/* GUTTER */&lt;br /&gt;
 .CodeMirror-gutters {&lt;br /&gt;
     border-right: 1px solid #ddd;&lt;br /&gt;
     background-color: #f7f7f7;&lt;br /&gt;
     white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linenumbers {&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linenumber {&lt;br /&gt;
     padding: 0 3px 0 5px;&lt;br /&gt;
     min-width: 20px;&lt;br /&gt;
     text-align: right;&lt;br /&gt;
     color: #999;&lt;br /&gt;
     white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-guttermarker {&lt;br /&gt;
     color: black;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-guttermarker-subtle {&lt;br /&gt;
     color: #999;&lt;br /&gt;
}&lt;br /&gt;
/** CodeMirror **/&lt;br /&gt;
/* CURSOR */&lt;br /&gt;
 .CodeMirror-cursor {&lt;br /&gt;
     border-left: 1px solid black;&lt;br /&gt;
     border-right: none;&lt;br /&gt;
     width: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Shown when moving in bi-directional text */&lt;br /&gt;
 .CodeMirror div.CodeMirror-secondarycursor {&lt;br /&gt;
     border-left: 1px solid silver;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 .cm-fat-cursor .CodeMirror-cursor {&lt;br /&gt;
     width: auto;&lt;br /&gt;
     border: 0 !important;&lt;br /&gt;
     background: #7e7;&lt;br /&gt;
}&lt;br /&gt;
 .cm-fat-cursor div.CodeMirror-cursors {&lt;br /&gt;
     z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
 .cm-fat-cursor-mark {&lt;br /&gt;
     background-color: rgba(20, 255, 20, 0.5);&lt;br /&gt;
     -webkit-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     -moz-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
}&lt;br /&gt;
 .cm-animate-fat-cursor {&lt;br /&gt;
     width: auto;&lt;br /&gt;
     border: 0;&lt;br /&gt;
     -webkit-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     -moz-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     background-color: #7e7;&lt;br /&gt;
}&lt;br /&gt;
 @-moz-keyframes blink {&lt;br /&gt;
     0% {&lt;br /&gt;
    }&lt;br /&gt;
     50% {&lt;br /&gt;
         background-color: transparent;&lt;br /&gt;
    }&lt;br /&gt;
     100% {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 @-webkit-keyframes blink {&lt;br /&gt;
     0% {&lt;br /&gt;
    }&lt;br /&gt;
     50% {&lt;br /&gt;
         background-color: transparent;&lt;br /&gt;
    }&lt;br /&gt;
     100% {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 @keyframes blink {&lt;br /&gt;
     0% {&lt;br /&gt;
    }&lt;br /&gt;
     50% {&lt;br /&gt;
         background-color: transparent;&lt;br /&gt;
    }&lt;br /&gt;
     100% {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
/* Can style cursor different in overwrite (non-insert) mode */&lt;br /&gt;
 .CodeMirror-overwrite .CodeMirror-cursor {&lt;br /&gt;
}&lt;br /&gt;
 .cm-tab {&lt;br /&gt;
     display: inline-block;&lt;br /&gt;
     text-decoration: inherit;&lt;br /&gt;
     background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);&lt;br /&gt;
     background-position: right;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
.cm-trailingspace {&lt;br /&gt;
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAADBnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHja7ZZRjiMpDIbfOcUcAdsYm+NQBUh7gz3+/FAk6aR7WppWXlbaQikoxxjzfy6S0P/9Z4RfuChpDEnNc8k54kolFa4YeLyuq6eY1v260u7p2R4i7y8YJkEv12Pu27/Cro8JtgPR8WwPdu44vgPdVt4BZa48F9t+vgMJX3baz6HseTV92M7+iF353pxfn5NBjKYwCgfuQhJx57mKIANxqeht3RNPC69xxl2n31fahfvwRbyb3q/axbo95FmKEPN2yC8abTvp19othT5mRLchP39R5A76k3ZjNB+jX7urKUOpHPam4g6xRnA8IKWsaRnN8FGMbbWC5tjiCdEbaB5oZ6BCDLUHJWpUaVBf/UknUkzc2dAznyzL5mJc+FxQ0mw02KRIC2DEcoKawMz3XGitW9Z6JzlWbgRPJgSbFD+18JXxJ+0eaIxZukRTTL+0Ql48qwZpTHLzDi8goLE11aXvauGO9XFNsJOZLpkdG6zxuEIcSo/aksVZ4KcxhQ2ZrO0AkAhrK5IhAYGYSZQyRWM2Iujo4FOROaPsDxAgVW4UBtiIZMBxnmtjjtHyZeXLjKMFIBSviAFNkQpYKSnqx5KjhqqKpqCqWU1di9YsOWXNOVueZ1Q1sWRq2czcilUXT66e3dy9eC1cBEeYllwsFC+l1IpFK0JXzK7wqPXgQ4506JEPO/woRz1RPmc69cynnX6WszZu0vD6t9wsNG+l1U4dpdRT1567de+l14FaGzLS0JGHDR9l1Du1TfWZGr2Q+54abWqTWFp+9qAGs9ktBM3jRCczEONEIG6TAAqaJ7PolBJPcpNZLIyXQhnUSCecRpMYCKZOrIPu7B7kvuUWNP0VN/4TuTDRvYNcmOg2uc/cvqDW6vpFkQVovoVT0ygDBxscK3vlo8dz4CfB51P82z78dOL/gf5TgYb7NRwHivOIq3Qcgfbg1ktvPyqr8KaEYnhTQhzelFANb0rIw5sSurb2hoTW1j4siPMG/07Db7o4rMFM+1KDAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gcECwY00aHnvAAAACFJREFUCNdj/P8ss56BgaGBAQKYmBgYGBoYpaYzQgX/AQB32QYEphperwAAAABJRU5ErkJggg==);&lt;br /&gt;
    background-position: bottom left;&lt;br /&gt;
    background-repeat: repeat-x;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-rulers {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     right: 0;&lt;br /&gt;
     top: -50px;&lt;br /&gt;
     bottom: -20px;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-ruler {&lt;br /&gt;
     border-left: 1px solid #ccc;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     position: absolute;&lt;br /&gt;
}&lt;br /&gt;
/** CodeMirror **/&lt;br /&gt;
/* DEFAULT THEME */&lt;br /&gt;
 .cm-s-default .cm-header {&lt;br /&gt;
     color: blue;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-quote {&lt;br /&gt;
     color: #090;&lt;br /&gt;
}&lt;br /&gt;
 .cm-negative {&lt;br /&gt;
     color: #d44;&lt;br /&gt;
}&lt;br /&gt;
 .cm-positive {&lt;br /&gt;
     color: #292;&lt;br /&gt;
}&lt;br /&gt;
 .cm-header, .cm-strong {&lt;br /&gt;
     font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
 .cm-em {&lt;br /&gt;
     font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
 .cm-link {&lt;br /&gt;
     text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
 .cm-strikethrough {&lt;br /&gt;
     text-decoration: line-through;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-keyword {&lt;br /&gt;
     color: #708;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-atom {&lt;br /&gt;
     color: #219;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-number {&lt;br /&gt;
     color: #164;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-def {&lt;br /&gt;
     color: #00f;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-variable, .cm-s-default .cm-punctuation, .cm-s-default .cm-property, .cm-s-default .cm-operator {&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-variable-2 {&lt;br /&gt;
     color: #05a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-variable-3, .cm-s-default .cm-type {&lt;br /&gt;
     color: #085;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-comment {&lt;br /&gt;
     color: #a50;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-string {&lt;br /&gt;
     color: #a11;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-string-2 {&lt;br /&gt;
     color: #f50;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-meta {&lt;br /&gt;
     color: #555;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-qualifier {&lt;br /&gt;
     color: #555;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-builtin {&lt;br /&gt;
     color: #30a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-bracket {&lt;br /&gt;
     color: #997;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-tag {&lt;br /&gt;
     color: #170;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-attribute {&lt;br /&gt;
     color: #00c;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-hr {&lt;br /&gt;
     color: #999;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-link {&lt;br /&gt;
     color: #00c;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-error {&lt;br /&gt;
     color: #f00;&lt;br /&gt;
}&lt;br /&gt;
 .cm-invalidchar {&lt;br /&gt;
     color: #f00;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-composing {&lt;br /&gt;
     border-bottom: 2px solid;&lt;br /&gt;
}&lt;br /&gt;
/* Default styles for common addons */&lt;br /&gt;
 div.CodeMirror span.CodeMirror-matchingbracket {&lt;br /&gt;
     color: #0b0;&lt;br /&gt;
}&lt;br /&gt;
 div.CodeMirror span.CodeMirror-nonmatchingbracket {&lt;br /&gt;
     color: #a22;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-matchingtag {&lt;br /&gt;
     background: rgba(255, 150, 0, .3);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-activeline-background {&lt;br /&gt;
     background: #e8f2ff;&lt;br /&gt;
}&lt;br /&gt;
/* STOP */&lt;br /&gt;
/* The rest of this file contains styles related to the mechanics of the editor. You probably shouldn&#039;t touch them. */&lt;br /&gt;
 .CodeMirror {&lt;br /&gt;
     position: relative;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     background: white;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-scroll {&lt;br /&gt;
     overflow: hidden !important;&lt;br /&gt;
    /* Things will break if this is overridden */&lt;br /&gt;
    /* 30px is the magic margin used to hide the element&#039;s real scrollbars */&lt;br /&gt;
    /* See overflow: hidden in .CodeMirror */&lt;br /&gt;
     margin-bottom: -30px;&lt;br /&gt;
     margin-right: -30px;&lt;br /&gt;
     padding-bottom: 30px;&lt;br /&gt;
     height: 100%;&lt;br /&gt;
     outline: none;&lt;br /&gt;
    /* Prevent dragging from highlighting the element */&lt;br /&gt;
     position: relative;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-sizer {&lt;br /&gt;
     position: relative;&lt;br /&gt;
     border-right: 30px solid transparent;&lt;br /&gt;
}&lt;br /&gt;
/* The fake, visible scrollbars. Used to force redraw during scrolling before actual scrolling happens, thus preventing shaking and flickering artifacts. */&lt;br /&gt;
 .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     z-index: 6;&lt;br /&gt;
     display: none;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-vscrollbar {&lt;br /&gt;
     right: 0;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     overflow-x: hidden;&lt;br /&gt;
     overflow-y: scroll;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-hscrollbar {&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     overflow-y: hidden;&lt;br /&gt;
     overflow-x: scroll;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-scrollbar-filler {&lt;br /&gt;
     right: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-filler {&lt;br /&gt;
     left: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutters {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     min-height: 100%;&lt;br /&gt;
     z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter {&lt;br /&gt;
     white-space: normal;&lt;br /&gt;
     height: 100%;&lt;br /&gt;
     display: inline-block;&lt;br /&gt;
     vertical-align: top;&lt;br /&gt;
     margin-bottom: -30px;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-wrapper {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     z-index: 4;&lt;br /&gt;
     background: none !important;&lt;br /&gt;
     border: none !important;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-background {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     z-index: 4;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-elt {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     cursor: default;&lt;br /&gt;
     z-index: 4;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-wrapper ::selection {&lt;br /&gt;
     background-color: transparent &lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-wrapper ::-moz-selection {&lt;br /&gt;
     background-color: transparent &lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lines {&lt;br /&gt;
     cursor: text;&lt;br /&gt;
     min-height: 1px;&lt;br /&gt;
    /* prevents collapsing before first draw */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror pre {&lt;br /&gt;
    /* Reset some styles that the rest of the page might have set */&lt;br /&gt;
     -moz-border-radius: 0;&lt;br /&gt;
     -webkit-border-radius: 0;&lt;br /&gt;
     border-radius: 0;&lt;br /&gt;
     border-width: 0;&lt;br /&gt;
     background: transparent;&lt;br /&gt;
     font-family: inherit;&lt;br /&gt;
     font-size: inherit;&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     white-space: pre;&lt;br /&gt;
     word-wrap: normal;&lt;br /&gt;
     line-height: inherit;&lt;br /&gt;
     color: inherit;&lt;br /&gt;
     z-index: 2;&lt;br /&gt;
     position: relative;&lt;br /&gt;
     overflow: visible;&lt;br /&gt;
     -webkit-tap-highlight-color: transparent;&lt;br /&gt;
     -webkit-font-variant-ligatures: contextual;&lt;br /&gt;
     font-variant-ligatures: contextual;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-wrap pre {&lt;br /&gt;
     word-wrap: break-word;&lt;br /&gt;
     white-space: pre-wrap;&lt;br /&gt;
     word-break: normal;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linebackground {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     right: 0;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     z-index: 0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linewidget {&lt;br /&gt;
     position: relative;&lt;br /&gt;
     z-index: 2;&lt;br /&gt;
     padding: 0.1px;&lt;br /&gt;
    /* Force widget margins to stay inside of the container */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-widget {&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-rtl pre {&lt;br /&gt;
     direction: rtl;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-code {&lt;br /&gt;
     font-family: &amp;quot;Lucida Console&amp;quot;, &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace !important;&lt;br /&gt;
     font-size: 16px;&lt;br /&gt;
     outline: none;&lt;br /&gt;
}&lt;br /&gt;
/* Force content-box sizing for the elements where we expect it */&lt;br /&gt;
 .CodeMirror-scroll, .CodeMirror-sizer, .CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber {&lt;br /&gt;
     -moz-box-sizing: content-box;&lt;br /&gt;
     box-sizing: content-box;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-measure {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     width: 100%;&lt;br /&gt;
     height: 0;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     visibility: hidden;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-cursor {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-measure pre {&lt;br /&gt;
     position: static;&lt;br /&gt;
}&lt;br /&gt;
 div.CodeMirror-cursors {&lt;br /&gt;
     visibility: hidden;&lt;br /&gt;
     position: relative;&lt;br /&gt;
     z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
 div.CodeMirror-dragcursors {&lt;br /&gt;
     visibility: visible;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-focused div.CodeMirror-cursors {&lt;br /&gt;
     visibility: visible;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-selected {&lt;br /&gt;
     background: #d9d9d9;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-focused .CodeMirror-selected {&lt;br /&gt;
     background: #d7d4f0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-crosshair {&lt;br /&gt;
     cursor: crosshair;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-line::selection, .CodeMirror-line &amp;gt; span::selection, .CodeMirror-line &amp;gt; span &amp;gt; span::selection {&lt;br /&gt;
     background: #d7d4f0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-line::-moz-selection, .CodeMirror-line &amp;gt; span::-moz-selection, .CodeMirror-line &amp;gt; span &amp;gt; span::-moz-selection {&lt;br /&gt;
     background: #d7d4f0;&lt;br /&gt;
}&lt;br /&gt;
 .cm-searching {&lt;br /&gt;
     background-color: #ffa;&lt;br /&gt;
     background-color: rgba(255, 255, 0, .4);&lt;br /&gt;
}&lt;br /&gt;
/* Used to force a border model for a node */&lt;br /&gt;
 .cm-force-border {&lt;br /&gt;
     padding-right: .1px;&lt;br /&gt;
}&lt;br /&gt;
 @media print {&lt;br /&gt;
    /* Hide the cursor when printing */&lt;br /&gt;
     .CodeMirror div.CodeMirror-cursors {&lt;br /&gt;
         visibility: hidden;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
/* See issue #2901 */&lt;br /&gt;
 .cm-tab-wrap-hack:after {&lt;br /&gt;
     content: &#039;&#039;;&lt;br /&gt;
}&lt;br /&gt;
/* Help users use markselection to safely style text background */&lt;br /&gt;
 span.CodeMirror-selectedtext {&lt;br /&gt;
     background: none;&lt;br /&gt;
}&lt;br /&gt;
/* foldgutter */&lt;br /&gt;
 .CodeMirror-foldmarker {&lt;br /&gt;
     color: blue;&lt;br /&gt;
     text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px;&lt;br /&gt;
     font-family: arial;&lt;br /&gt;
     line-height: .3;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter {&lt;br /&gt;
     width: .7em;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded {&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter-open:after {&lt;br /&gt;
     content: &amp;quot;\25BE&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter-folded:after {&lt;br /&gt;
     content: &amp;quot;\25B8&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
/* The lint marker gutter */&lt;br /&gt;
 .CodeMirror-lint-markers {&lt;br /&gt;
     width: 16px;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-tooltip {&lt;br /&gt;
     background-color: #ffd;&lt;br /&gt;
     border: 1px solid black;&lt;br /&gt;
     border-radius: 4px 4px 4px 4px;&lt;br /&gt;
     color: black;&lt;br /&gt;
     font-family: monospace;&lt;br /&gt;
     font-size: 10pt;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     padding: 2px 5px;&lt;br /&gt;
     position: fixed;&lt;br /&gt;
     white-space: pre;&lt;br /&gt;
     white-space: pre-wrap;&lt;br /&gt;
     z-index: 100;&lt;br /&gt;
     max-width: 600px;&lt;br /&gt;
     opacity: 0;&lt;br /&gt;
     transition: opacity .4s;&lt;br /&gt;
     -moz-transition: opacity .4s;&lt;br /&gt;
     -webkit-transition: opacity .4s;&lt;br /&gt;
     -o-transition: opacity .4s;&lt;br /&gt;
     -ms-transition: opacity .4s;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {&lt;br /&gt;
     background-position: left bottom;&lt;br /&gt;
     background-repeat: repeat-x;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-mark-error {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-mark-warning {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {&lt;br /&gt;
     background-position: center center;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     display: inline-block;&lt;br /&gt;
     height: 16px;&lt;br /&gt;
     width: 16px;&lt;br /&gt;
     vertical-align: middle;&lt;br /&gt;
     position: relative;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {&lt;br /&gt;
     padding-left: 18px;&lt;br /&gt;
     background-position: top left;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-multiple {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC&amp;quot;);&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
     background-position: right bottom;&lt;br /&gt;
     width: 100%;&lt;br /&gt;
     height: 100%;&lt;br /&gt;
}&lt;br /&gt;
/* MDN-LIKE Theme - Mozilla Ported to CodeMirror by Peter Kroon &amp;lt;plakroon@gmail.com&amp;gt; Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues GitHub: @peterkroon The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation */&lt;br /&gt;
 .cm-s-mdn-like.CodeMirror {&lt;br /&gt;
     color: #999;&lt;br /&gt;
     background-color: #fff;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like div.CodeMirror-selected {&lt;br /&gt;
     background: #cfc;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span::selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span &amp;gt; span::selection {&lt;br /&gt;
     background: #cfc;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span::-moz-selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span &amp;gt; span::-moz-selection {&lt;br /&gt;
     background: #cfc;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-gutters, .cm-s-neo .CodeMirror-gutters {&lt;br /&gt;
     background: #f8f8f8;&lt;br /&gt;
     border-left: 6px solid rgba(0,83,159,0.65);&lt;br /&gt;
     color: #333;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-linenumber, .cm-s-neo .CodeMirror-linenumber {&lt;br /&gt;
     color: #aaa;&lt;br /&gt;
     padding-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-cursor {&lt;br /&gt;
     border-left: 2px solid #222;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-keyword {&lt;br /&gt;
     color: #6262FF;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-atom {&lt;br /&gt;
     color: #F90;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-number {&lt;br /&gt;
     color: #ca7841;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-def {&lt;br /&gt;
     color: #8DA6CE;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag {&lt;br /&gt;
     color: #690;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def, .cm-s-mdn-like span.cm-type {&lt;br /&gt;
     color: #07a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-variable {&lt;br /&gt;
     color: #07a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-property {&lt;br /&gt;
     color: #905;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-qualifier {&lt;br /&gt;
     color: #690;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-operator {&lt;br /&gt;
     color: #cda869;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-comment {&lt;br /&gt;
     color:#777;&lt;br /&gt;
     font-weight:normal;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-string {&lt;br /&gt;
     color:#07a;&lt;br /&gt;
     font-style:italic;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-string-2 {&lt;br /&gt;
     color:#bd6b18;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-meta {&lt;br /&gt;
     color: #000;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-builtin {&lt;br /&gt;
     color: #9B7536;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-tag {&lt;br /&gt;
     color: #997643;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-attribute {&lt;br /&gt;
     color: #d6bb6d;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-header {&lt;br /&gt;
     color: #FF6400;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-hr {&lt;br /&gt;
     color: #AEAEAE;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-link {&lt;br /&gt;
     color:#ad9361;&lt;br /&gt;
     font-style:italic;&lt;br /&gt;
     text-decoration:none;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-error {&lt;br /&gt;
     border-bottom: 1px solid red;&lt;br /&gt;
}&lt;br /&gt;
 div.cm-s-mdn-like .CodeMirror-activeline-background {&lt;br /&gt;
     background: #efefff;&lt;br /&gt;
}&lt;br /&gt;
 div.cm-s-mdn-like span.CodeMirror-matchingbracket {&lt;br /&gt;
     outline:1px solid grey;&lt;br /&gt;
     color: inherit;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like.CodeMirror, .cm-s-neo.CodeMirror {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAHvklEQVR42s2b63bcNgyEQZCSHCdt2vd/0tWF7I+Q6XgMXiTtuvU5Pl57ZQKkKHzEAOtF5KeIJBGJ8uvL599FRFREZhFx8DeXv8trn68RuGaC8TRfo3SNp9dlDDHedyLyTUTeRWStXKPZrjtpZxaRw5hPqozRs1N8/enzIiQRWcCgy4MUA0f+XWliDhyL8Lfyvx7ei/Ae3iQFHyw7U/59pQVIMEEPEz0G7XiwdRjzSfC3UTtz9vchIntxvry5iMgfIhJoEflOz2CQr3F5h/HfeFe+GTdLaKcu9L8LTeQb/R/7GgbsfKedyNdoHsN31uRPWrfZ5wsj/NzzRQHuToIdU3ahwnsKPxXCjJITuOsi7XLc7SG/v5GdALs7wf8JjTFiB5+QvTEfRyGOfX3Lrx8wxyQi3sNq46O7QahQiCsRFgqddjBouVEHOKDgXAQHD9gJCr5sMKkEdjwsarG/ww3BMHBU7OBjXnzdyY7SfCxf5/z6ATccrwlKuwC/jhznnPF4CgVzhhVf4xp2EixcBActO75iZ8/fM9zAs2OMzKdslgXWJ9XG8PQoOAMA5fGcsvORgv0doBXyHrCwfLJAOwo71QLNkb8n2Pl6EWiR7OCibtkPaz4Kc/0NNAze2gju3zOwekALDaCFPI5vjPFmgGY5AZqyGEvH1x7QfIb8YtxMnA/b+QQ0aQDAwc6JMFg8CbQZ4qoYEEHbRwNojuK3EHwd7VALSgq+MNDKzfT58T8qdpADrgW0GmgcAS1lhzztJmkAzcPNOQbsWEALBDSlMKUG0Eq4CLAQWvEVQ9WU57gZJwZtgPO3r9oBTQ9WO8TjqXINx8R0EYpiZEUWOF3FxkbJkgU9B2f41YBrIj5ZfsQa0M5kTgiAAqM3ShXLgu8XMqcrQBvJ0CL5pnTsfMB13oB8athpAq2XOQmcGmoACCLydx7nToa23ATaSIY2ichfOdPTGxlasXMLaL0MLZAOwAKIM+y8CmicobGdCcbbK9DzN+yYGVoNNI5iUKTMyYOjPse4A8SM1MmcXgU0toOq1yO/v8FOxlASyc7TgeYaAMBJHcY1CcCwGI/TK4AmDbDyKYBBtFUkRwto8gygiQEaByFgJ00BH2M8JWwQS1nafDXQCidWyOI8AcjDCSjCLk8ngObuAm3JAHAdubAmOaK06V8MNEsKPJOhobSprwQa6gD7DclRQdqcwL4zxqgBrQcabUiBLclRDKAlWp+etPkBaNMA0AKlrHwTdEByZAA4GM+SNluSY6wAzcMNewxmgig5Ks0nkrSpBvSaQHMdKTBAnLojOdYyGpQ254602ZILPdTD1hdlggdIm74jbTp8vDwF5ZYUeLWGJpWsh6XNyXgcYwVoJQTEhhTYkxzZjiU5npU2TaB979TQehlaAVq4kaGpiPwwwLkYUuBbQwocyQTv1tA0+1UFWoJF3iv1oq+qoSk8EQdJmwHkziIF7oOZk14EGitibAdjLYYK78H5vZOhtWpoI0ATGHs0Q8OMb4Ey+2bU2UYztCtA0wFAs7TplGLRVQCcqaFdGSPCeTI1QNIC52iWNzof6Uib7xjEp07mNNoUYmVosVItHrHzRlLgBn9LFyRHaQCtVUMbtTNhoXWiTOO9k/V8BdAc1Oq0ArSQs6/5SU0hckNy9NnXqQY0PGYo5dWJ7nINaN6o958FWin27aBaWRka1r5myvLOAm0j30eBJqCxHLReVclxhxOEN2JfDWjxBtAC7MIH1fVaGdoOp4qJYDgKtKPSFNID2gSnGldrCqkFZ+5UeQXQBIRrSwocbdZYQT/2LwRahBPBXoHrB8nxaGROST62DKUbQOMMzZIC9abkuELfQzQALWTnDNAm8KHWFOJgJ5+SHIvTPcmx1xQyZRhNL5Qci689aXMEaN/uNIWkEwDAvFpOZmgsBaaGnbs1NPa1Jm32gBZAIh1pCtG7TSH4aE0y1uVY4uqoFPisGlpP2rSA5qTecWn5agK6BzSpgAyD+wFaqhnYoSZ1Vwr8CmlTQbrcO3ZaX0NAEyMbYaAlyquFoLKK3SPby9CeVUPThrSJmkCAE0CrKUQadi4DrdSlWhmah0YL9z9vClH59YGbHx1J8VZTyAjQepJjmXwAKTDQI3omc3p1U4gDUf6RfcdYfrUp5ClAi2J3Ba6UOXGo+K+bQrjjssitG2SJzshaLwMtXgRagUNpYYoVkMSBLM+9GGiJZMvduG6DRZ4qc04DMPtQQxOjEtACmhO7K1AbNbQDEggZyJwscFpAGwENhoBeUwh3bWolhe8BTYVKxQEWrSUn/uhcM5KhvUu/+eQu0Lzhi+VrK0PrZZNDQKs9cpYUuFYgMVpD4/NxenJTiMCNqdUEUf1qZWjppLT5qSkkUZbCwkbZMSuVnu80hfSkzRbQeqCZSAh6huR4VtoM2gHAlLf72smuWgE+VV7XpE25Ab2WFDgyhnSuKbs4GuGzCjR+tIoUuMFg3kgcWKLTwRqanJQ2W00hAsenfaApRC42hbCvK1SlE0HtE9BGgneJO+ELamitD1YjjOYnNYVcraGhtKkW0EqVVeDx733I2NH581k1NNxNLG0i0IJ8/NjVaOZ0tYZ2Vtr0Xv7tPV3hkWp9EFkgS/J0vosngTaSoaG06WHi+xObQkaAdlbanP8B2+2l0f90LmUAAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
/* Fullscreen */&lt;br /&gt;
.CodeMirror-fullscreen {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    top: 0; &lt;br /&gt;
    left: 13em; &lt;br /&gt;
    right: 0; &lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    z-index: 9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hints */&lt;br /&gt;
.CodeMirror-hints {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     z-index: 10;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     list-style: none;&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     padding: 2px;&lt;br /&gt;
     -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
     -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
     box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
     border-radius: 3px;&lt;br /&gt;
     border: 1px solid silver;&lt;br /&gt;
     background: white;&lt;br /&gt;
     font-size: 90%;&lt;br /&gt;
     font-family: monospace;&lt;br /&gt;
     max-height: 20em;&lt;br /&gt;
     overflow-y: auto;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-hint {&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     padding: 0 4px;&lt;br /&gt;
     border-radius: 2px;&lt;br /&gt;
     white-space: pre;&lt;br /&gt;
     color: black;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
 li.CodeMirror-hint-active {&lt;br /&gt;
     background: #08f;&lt;br /&gt;
     color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dialog */&lt;br /&gt;
.CodeMirror-dialog {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0; right: 0;&lt;br /&gt;
  background: inherit;&lt;br /&gt;
  z-index: 15;&lt;br /&gt;
  padding: .1em .8em;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
  color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog-top {&lt;br /&gt;
  border-bottom: 1px solid #eee;&lt;br /&gt;
  top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog-bottom {&lt;br /&gt;
  border-top: 1px solid #eee;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog input {&lt;br /&gt;
  border: none;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  width: 20em;&lt;br /&gt;
  color: inherit;&lt;br /&gt;
  font-family: monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog button {&lt;br /&gt;
  font-size: 70%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tern */&lt;br /&gt;
.CodeMirror-Tern-completion {&lt;br /&gt;
  padding-left: 22px;&lt;br /&gt;
  position: relative;&lt;br /&gt;
  line-height: 1.5;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion:before {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 2px;&lt;br /&gt;
  bottom: 2px;&lt;br /&gt;
  border-radius: 50%;&lt;br /&gt;
  font-size: 12px;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  height: 15px;&lt;br /&gt;
  width: 15px;&lt;br /&gt;
  line-height: 16px;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  color: white;&lt;br /&gt;
  -moz-box-sizing: border-box;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-unknown:before {&lt;br /&gt;
  content: &amp;quot;?&amp;quot;;&lt;br /&gt;
  background: #4bb;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-object:before {&lt;br /&gt;
  content: &amp;quot;O&amp;quot;;&lt;br /&gt;
  background: #77c;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-fn:before {&lt;br /&gt;
  content: &amp;quot;F&amp;quot;;&lt;br /&gt;
  background: #7c7;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-array:before {&lt;br /&gt;
  content: &amp;quot;A&amp;quot;;&lt;br /&gt;
  background: #c66;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-number:before {&lt;br /&gt;
  content: &amp;quot;1&amp;quot;;&lt;br /&gt;
  background: #999;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-string:before {&lt;br /&gt;
  content: &amp;quot;S&amp;quot;;&lt;br /&gt;
  background: #999;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-bool:before {&lt;br /&gt;
  content: &amp;quot;B&amp;quot;;&lt;br /&gt;
  background: #999;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-completion-guess {&lt;br /&gt;
  color: #999;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-tooltip {&lt;br /&gt;
  border: 1px solid silver;&lt;br /&gt;
  border-radius: 3px;&lt;br /&gt;
  color: #444;&lt;br /&gt;
  padding: 2px 5px;&lt;br /&gt;
  font-size: 90%;&lt;br /&gt;
  font-family: monospace;&lt;br /&gt;
  background-color: white;&lt;br /&gt;
  white-space: pre-wrap;&lt;br /&gt;
&lt;br /&gt;
  max-width: 40em;&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  z-index: 10;&lt;br /&gt;
  -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
  -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
  box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
&lt;br /&gt;
  transition: opacity 1s;&lt;br /&gt;
  -moz-transition: opacity 1s;&lt;br /&gt;
  -webkit-transition: opacity 1s;&lt;br /&gt;
  -o-transition: opacity 1s;&lt;br /&gt;
  -ms-transition: opacity 1s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-hint-doc {&lt;br /&gt;
  max-width: 25em;&lt;br /&gt;
  margin-top: -3px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-fname { color: black; }&lt;br /&gt;
.CodeMirror-Tern-farg { color: #70a; }&lt;br /&gt;
.CodeMirror-Tern-farg-current { text-decoration: underline; }&lt;br /&gt;
.CodeMirror-Tern-type { color: #07c; }&lt;br /&gt;
.CodeMirror-Tern-fhint-guess { opacity: .7; }&lt;br /&gt;
&lt;br /&gt;
/* neo theme for codemirror */&lt;br /&gt;
&lt;br /&gt;
/* Color scheme */&lt;br /&gt;
&lt;br /&gt;
.cm-s-neo.CodeMirror {&lt;br /&gt;
  background-color:#ffffff;&lt;br /&gt;
  color:#2e383c;&lt;br /&gt;
  line-height:1.4375;&lt;br /&gt;
}&lt;br /&gt;
.cm-s-neo .cm-comment { color:#75787b; }&lt;br /&gt;
.cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; }&lt;br /&gt;
.cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; }&lt;br /&gt;
.cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; }&lt;br /&gt;
.cm-s-neo .cm-string { color:#b35e14; }&lt;br /&gt;
.cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Editor styling */&lt;br /&gt;
&lt;br /&gt;
.cm-s-neo pre {&lt;br /&gt;
  padding:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; }&lt;br /&gt;
.cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; }&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------*/&lt;br /&gt;
/* Universal */&lt;br /&gt;
 button{&lt;br /&gt;
     float: left;&lt;br /&gt;
     line-height: 1.3;&lt;br /&gt;
     padding: 5px 8px;&lt;br /&gt;
}&lt;br /&gt;
 button.run {&lt;br /&gt;
     background-image: linear-gradient(to bottom, #337AB7 0px, #265A88 100%);&lt;br /&gt;
     background-color: #306AA0;&lt;br /&gt;
     border-radius: 6px;&lt;br /&gt;
     border-color: #245580;&lt;br /&gt;
     border-width: 1px;&lt;br /&gt;
     color: #FFF;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     font-size: 18px;&lt;br /&gt;
}&lt;br /&gt;
 button.other {&lt;br /&gt;
     border-radius: 0.5ex;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     display: inline;&lt;br /&gt;
     border: 1px solid;&lt;br /&gt;
     float: right;&lt;br /&gt;
     font-size: 14px;&lt;br /&gt;
     margin-left: 0.25em;&lt;br /&gt;
}&lt;br /&gt;
 code {&lt;br /&gt;
     background-color: #e6e6e6;&lt;br /&gt;
}&lt;br /&gt;
 div.guidelist{&lt;br /&gt;
     float: right;&lt;br /&gt;
     width: 32ex;&lt;br /&gt;
     border-left: 1px solid;&lt;br /&gt;
     border-right: 1px solid;&lt;br /&gt;
     background-color: #F0F0FF;&lt;br /&gt;
     border-collapse: collapse;&lt;br /&gt;
     border-bottom: 1px solid;&lt;br /&gt;
     margin-bottom: 2%;&lt;br /&gt;
     padding-left: 0px;&lt;br /&gt;
}&lt;br /&gt;
 div.guidelist div.fc {&lt;br /&gt;
     padding: 1em;&lt;br /&gt;
     background-color: #000;&lt;br /&gt;
     color: #FFF;&lt;br /&gt;
}&lt;br /&gt;
 div.guidelist div {&lt;br /&gt;
     padding: 0ex 1em;&lt;br /&gt;
     border-bottom: 1px solid;&lt;br /&gt;
}&lt;br /&gt;
div.res.waiting {&lt;br /&gt;
     background-image: url(/mw/design/spinner.gif) !important;&lt;br /&gt;
     background-repeat: no-repeat !important;;&lt;br /&gt;
     background-position: center center !important;;&lt;br /&gt;
     height: 180px;&lt;br /&gt;
}&lt;br /&gt;
 h1#firstHeading{&lt;br /&gt;
     overflow-x: hidden;&lt;br /&gt;
}&lt;br /&gt;
 pre{&lt;br /&gt;
     border-color: #949494;&lt;br /&gt;
     white-space: pre-wrap;&lt;br /&gt;
    /* CSS 3 */&lt;br /&gt;
     white-space: -moz-pre-wrap;&lt;br /&gt;
    /* Mozilla, since 1999 */&lt;br /&gt;
     white-space: -pre-wrap;&lt;br /&gt;
    /* Opera 4-6 */&lt;br /&gt;
     white-space: -o-pre-wrap;&lt;br /&gt;
    /* Opera 7 */&lt;br /&gt;
     word-wrap: break-word;&lt;br /&gt;
    /* Internet Explorer 5.5+ */&lt;br /&gt;
}&lt;br /&gt;
 span.id{&lt;br /&gt;
     font-size:300%;&lt;br /&gt;
     padding-right:1ex &lt;br /&gt;
}&lt;br /&gt;
 textarea{&lt;br /&gt;
     background: #F9F9F9;&lt;br /&gt;
     font-family: &amp;quot;Lucida Console&amp;quot;, &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
     font-size: 16px;&lt;br /&gt;
     margin: 1em 0;&lt;br /&gt;
     min-height: 150px;&lt;br /&gt;
     resize: vertical;&lt;br /&gt;
}&lt;br /&gt;
 .strong{&lt;br /&gt;
     font-weight:bold;&lt;br /&gt;
}&lt;br /&gt;
 .tease {&lt;br /&gt;
     color: #1D365D;&lt;br /&gt;
     font-style: italic;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     padding: 0.2ex;&lt;br /&gt;
}&lt;br /&gt;
 .q{&lt;br /&gt;
     border-top: thin solid #ee8301;&lt;br /&gt;
     margin-bottom: 9em;&lt;br /&gt;
     width: 100%;&lt;br /&gt;
}&lt;br /&gt;
 .q .ans, .q .def, .q .res{&lt;br /&gt;
     font-weight: normal;&lt;br /&gt;
     display: none;&lt;br /&gt;
}&lt;br /&gt;
 .q .res{&lt;br /&gt;
     background: rgba(246, 246, 246, 1);&lt;br /&gt;
     border: solid thin black;&lt;br /&gt;
     border-radius: 0.5ex;&lt;br /&gt;
     border-style: inset;&lt;br /&gt;
     border-width: 1px;&lt;br /&gt;
     box-shadow: 1px 1px 3px #3b434e;&lt;br /&gt;
     color: #3b434e;&lt;br /&gt;
     clear:both;&lt;br /&gt;
     height: auto;&lt;br /&gt;
     margin-top: 1ex;&lt;br /&gt;
     max-width: 100%;&lt;br /&gt;
     overflow: auto;&lt;br /&gt;
     padding: 1em;&lt;br /&gt;
     resize: both;&lt;br /&gt;
}&lt;br /&gt;
 .setup{&lt;br /&gt;
     display: none;&lt;br /&gt;
}&lt;br /&gt;
 .tease{&lt;br /&gt;
     color:#1d365d;&lt;br /&gt;
     font-style:italic;&lt;br /&gt;
     cursor:pointer;&lt;br /&gt;
     padding: 0.2ex;&lt;br /&gt;
}&lt;br /&gt;
 @media all and (max-width: 768px){&lt;br /&gt;
     div.vectorTabs{&lt;br /&gt;
         padding: 0;&lt;br /&gt;
    }&lt;br /&gt;
     .guidelist{&lt;br /&gt;
         display: none;&lt;br /&gt;
    }&lt;br /&gt;
     .mw-body{&lt;br /&gt;
         border-left: 0;&lt;br /&gt;
         margin-left: 0;&lt;br /&gt;
    }&lt;br /&gt;
     div#footer{&lt;br /&gt;
         margin-left: 0;&lt;br /&gt;
    }&lt;br /&gt;
     #mw-panel{&lt;br /&gt;
         display:none;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 .qcorrect{&lt;br /&gt;
     background-image: url(//sqlzoo.net/design/done9.png);&lt;br /&gt;
}&lt;br /&gt;
 .qincorrect {&lt;br /&gt;
     background-image:url(//sqlzoo.net/design/undone9.png);&lt;br /&gt;
}&lt;br /&gt;
 .qcorrect, .qincorrect {&lt;br /&gt;
     width: 3em;&lt;br /&gt;
     height: 3em;&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     margin: 0em 0 0 5em;&lt;br /&gt;
     background-size: 3em;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
     background-position: center;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.css&amp;diff=1458</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.css&amp;diff=1458"/>
		<updated>2025-03-29T18:43:00Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#tagline {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-cookiewarning-container {&lt;br /&gt;
    position: static !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CodeMirror */&lt;br /&gt;
/*---------------------------------------------------------------*/&lt;br /&gt;
/* BASICS */&lt;br /&gt;
 .CodeMirror {&lt;br /&gt;
    /* Set height, width, borders, and global font properties here */&lt;br /&gt;
     font-family: monospace;&lt;br /&gt;
     height: auto!important;&lt;br /&gt;
     color: black;&lt;br /&gt;
     direction: ltr;&lt;br /&gt;
     border-width: 1px 1px 1px 0px;&lt;br /&gt;
     border-color: grey;&lt;br /&gt;
     border-style: solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 .CodeMirror, .CodeMirror-scroll, .CodeMirror-gutters {&lt;br /&gt;
       min-height: 150px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* PADDING */&lt;br /&gt;
 .CodeMirror-lines {&lt;br /&gt;
     padding: 4px 0;&lt;br /&gt;
    /* Vertical padding around content */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror pre {&lt;br /&gt;
     padding: 0 4px;&lt;br /&gt;
    /* Horizontal padding of content */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {&lt;br /&gt;
     background-color: white;&lt;br /&gt;
    /* The little square between H and V scrollbars */&lt;br /&gt;
}&lt;br /&gt;
/* GUTTER */&lt;br /&gt;
 .CodeMirror-gutters {&lt;br /&gt;
     border-right: 1px solid #ddd;&lt;br /&gt;
     background-color: #f7f7f7;&lt;br /&gt;
     white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linenumbers {&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linenumber {&lt;br /&gt;
     padding: 0 3px 0 5px;&lt;br /&gt;
     min-width: 20px;&lt;br /&gt;
     text-align: right;&lt;br /&gt;
     color: #999;&lt;br /&gt;
     white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-guttermarker {&lt;br /&gt;
     color: black;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-guttermarker-subtle {&lt;br /&gt;
     color: #999;&lt;br /&gt;
}&lt;br /&gt;
/** CodeMirror **/&lt;br /&gt;
/* CURSOR */&lt;br /&gt;
 .CodeMirror-cursor {&lt;br /&gt;
     border-left: 1px solid black;&lt;br /&gt;
     border-right: none;&lt;br /&gt;
     width: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Shown when moving in bi-directional text */&lt;br /&gt;
 .CodeMirror div.CodeMirror-secondarycursor {&lt;br /&gt;
     border-left: 1px solid silver;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 .cm-fat-cursor .CodeMirror-cursor {&lt;br /&gt;
     width: auto;&lt;br /&gt;
     border: 0 !important;&lt;br /&gt;
     background: #7e7;&lt;br /&gt;
}&lt;br /&gt;
 .cm-fat-cursor div.CodeMirror-cursors {&lt;br /&gt;
     z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
 .cm-fat-cursor-mark {&lt;br /&gt;
     background-color: rgba(20, 255, 20, 0.5);&lt;br /&gt;
     -webkit-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     -moz-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
}&lt;br /&gt;
 .cm-animate-fat-cursor {&lt;br /&gt;
     width: auto;&lt;br /&gt;
     border: 0;&lt;br /&gt;
     -webkit-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     -moz-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     background-color: #7e7;&lt;br /&gt;
}&lt;br /&gt;
 @-moz-keyframes blink {&lt;br /&gt;
     0% {&lt;br /&gt;
    }&lt;br /&gt;
     50% {&lt;br /&gt;
         background-color: transparent;&lt;br /&gt;
    }&lt;br /&gt;
     100% {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 @-webkit-keyframes blink {&lt;br /&gt;
     0% {&lt;br /&gt;
    }&lt;br /&gt;
     50% {&lt;br /&gt;
         background-color: transparent;&lt;br /&gt;
    }&lt;br /&gt;
     100% {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 @keyframes blink {&lt;br /&gt;
     0% {&lt;br /&gt;
    }&lt;br /&gt;
     50% {&lt;br /&gt;
         background-color: transparent;&lt;br /&gt;
    }&lt;br /&gt;
     100% {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
/* Can style cursor different in overwrite (non-insert) mode */&lt;br /&gt;
 .CodeMirror-overwrite .CodeMirror-cursor {&lt;br /&gt;
}&lt;br /&gt;
 .cm-tab {&lt;br /&gt;
     display: inline-block;&lt;br /&gt;
     text-decoration: inherit;&lt;br /&gt;
     background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);&lt;br /&gt;
     background-position: right;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
.cm-trailingspace {&lt;br /&gt;
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAADBnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHja7ZZRjiMpDIbfOcUcAdsYm+NQBUh7gz3+/FAk6aR7WppWXlbaQikoxxjzfy6S0P/9Z4RfuChpDEnNc8k54kolFa4YeLyuq6eY1v260u7p2R4i7y8YJkEv12Pu27/Cro8JtgPR8WwPdu44vgPdVt4BZa48F9t+vgMJX3baz6HseTV92M7+iF353pxfn5NBjKYwCgfuQhJx57mKIANxqeht3RNPC69xxl2n31fahfvwRbyb3q/axbo95FmKEPN2yC8abTvp19othT5mRLchP39R5A76k3ZjNB+jX7urKUOpHPam4g6xRnA8IKWsaRnN8FGMbbWC5tjiCdEbaB5oZ6BCDLUHJWpUaVBf/UknUkzc2dAznyzL5mJc+FxQ0mw02KRIC2DEcoKawMz3XGitW9Z6JzlWbgRPJgSbFD+18JXxJ+0eaIxZukRTTL+0Ql48qwZpTHLzDi8goLE11aXvauGO9XFNsJOZLpkdG6zxuEIcSo/aksVZ4KcxhQ2ZrO0AkAhrK5IhAYGYSZQyRWM2Iujo4FOROaPsDxAgVW4UBtiIZMBxnmtjjtHyZeXLjKMFIBSviAFNkQpYKSnqx5KjhqqKpqCqWU1di9YsOWXNOVueZ1Q1sWRq2czcilUXT66e3dy9eC1cBEeYllwsFC+l1IpFK0JXzK7wqPXgQ4506JEPO/woRz1RPmc69cynnX6WszZu0vD6t9wsNG+l1U4dpdRT1567de+l14FaGzLS0JGHDR9l1Du1TfWZGr2Q+54abWqTWFp+9qAGs9ktBM3jRCczEONEIG6TAAqaJ7PolBJPcpNZLIyXQhnUSCecRpMYCKZOrIPu7B7kvuUWNP0VN/4TuTDRvYNcmOg2uc/cvqDW6vpFkQVovoVT0ygDBxscK3vlo8dz4CfB51P82z78dOL/gf5TgYb7NRwHivOIq3Qcgfbg1ktvPyqr8KaEYnhTQhzelFANb0rIw5sSurb2hoTW1j4siPMG/07Db7o4rMFM+1KDAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gcECwY00aHnvAAAACFJREFUCNdj/P8ss56BgaGBAQKYmBgYGBoYpaYzQgX/AQB32QYEphperwAAAABJRU5ErkJggg==);&lt;br /&gt;
    background-position: bottom left;&lt;br /&gt;
    background-repeat: repeat-x;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-rulers {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     right: 0;&lt;br /&gt;
     top: -50px;&lt;br /&gt;
     bottom: -20px;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-ruler {&lt;br /&gt;
     border-left: 1px solid #ccc;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     position: absolute;&lt;br /&gt;
}&lt;br /&gt;
/** CodeMirror **/&lt;br /&gt;
/* DEFAULT THEME */&lt;br /&gt;
 .cm-s-default .cm-header {&lt;br /&gt;
     color: blue;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-quote {&lt;br /&gt;
     color: #090;&lt;br /&gt;
}&lt;br /&gt;
 .cm-negative {&lt;br /&gt;
     color: #d44;&lt;br /&gt;
}&lt;br /&gt;
 .cm-positive {&lt;br /&gt;
     color: #292;&lt;br /&gt;
}&lt;br /&gt;
 .cm-header, .cm-strong {&lt;br /&gt;
     font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
 .cm-em {&lt;br /&gt;
     font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
 .cm-link {&lt;br /&gt;
     text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
 .cm-strikethrough {&lt;br /&gt;
     text-decoration: line-through;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-keyword {&lt;br /&gt;
     color: #708;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-atom {&lt;br /&gt;
     color: #219;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-number {&lt;br /&gt;
     color: #164;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-def {&lt;br /&gt;
     color: #00f;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-variable, .cm-s-default .cm-punctuation, .cm-s-default .cm-property, .cm-s-default .cm-operator {&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-variable-2 {&lt;br /&gt;
     color: #05a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-variable-3, .cm-s-default .cm-type {&lt;br /&gt;
     color: #085;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-comment {&lt;br /&gt;
     color: #a50;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-string {&lt;br /&gt;
     color: #a11;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-string-2 {&lt;br /&gt;
     color: #f50;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-meta {&lt;br /&gt;
     color: #555;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-qualifier {&lt;br /&gt;
     color: #555;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-builtin {&lt;br /&gt;
     color: #30a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-bracket {&lt;br /&gt;
     color: #997;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-tag {&lt;br /&gt;
     color: #170;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-attribute {&lt;br /&gt;
     color: #00c;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-hr {&lt;br /&gt;
     color: #999;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-link {&lt;br /&gt;
     color: #00c;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-error {&lt;br /&gt;
     color: #f00;&lt;br /&gt;
}&lt;br /&gt;
 .cm-invalidchar {&lt;br /&gt;
     color: #f00;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-composing {&lt;br /&gt;
     border-bottom: 2px solid;&lt;br /&gt;
}&lt;br /&gt;
/* Default styles for common addons */&lt;br /&gt;
 div.CodeMirror span.CodeMirror-matchingbracket {&lt;br /&gt;
     color: #0b0;&lt;br /&gt;
}&lt;br /&gt;
 div.CodeMirror span.CodeMirror-nonmatchingbracket {&lt;br /&gt;
     color: #a22;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-matchingtag {&lt;br /&gt;
     background: rgba(255, 150, 0, .3);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-activeline-background {&lt;br /&gt;
     background: #e8f2ff;&lt;br /&gt;
}&lt;br /&gt;
/* STOP */&lt;br /&gt;
/* The rest of this file contains styles related to the mechanics of the editor. You probably shouldn&#039;t touch them. */&lt;br /&gt;
 .CodeMirror {&lt;br /&gt;
     position: relative;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     background: white;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-scroll {&lt;br /&gt;
     overflow: hidden !important;&lt;br /&gt;
    /* Things will break if this is overridden */&lt;br /&gt;
    /* 30px is the magic margin used to hide the element&#039;s real scrollbars */&lt;br /&gt;
    /* See overflow: hidden in .CodeMirror */&lt;br /&gt;
     margin-bottom: -30px;&lt;br /&gt;
     margin-right: -30px;&lt;br /&gt;
     padding-bottom: 30px;&lt;br /&gt;
     height: 100%;&lt;br /&gt;
     outline: none;&lt;br /&gt;
    /* Prevent dragging from highlighting the element */&lt;br /&gt;
     position: relative;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-sizer {&lt;br /&gt;
     position: relative;&lt;br /&gt;
     border-right: 30px solid transparent;&lt;br /&gt;
}&lt;br /&gt;
/* The fake, visible scrollbars. Used to force redraw during scrolling before actual scrolling happens, thus preventing shaking and flickering artifacts. */&lt;br /&gt;
 .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     z-index: 6;&lt;br /&gt;
     display: none;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-vscrollbar {&lt;br /&gt;
     right: 0;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     overflow-x: hidden;&lt;br /&gt;
     overflow-y: scroll;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-hscrollbar {&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     overflow-y: hidden;&lt;br /&gt;
     overflow-x: scroll;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-scrollbar-filler {&lt;br /&gt;
     right: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-filler {&lt;br /&gt;
     left: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutters {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     min-height: 100%;&lt;br /&gt;
     z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter {&lt;br /&gt;
     white-space: normal;&lt;br /&gt;
     height: 100%;&lt;br /&gt;
     display: inline-block;&lt;br /&gt;
     vertical-align: top;&lt;br /&gt;
     margin-bottom: -30px;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-wrapper {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     z-index: 4;&lt;br /&gt;
     background: none !important;&lt;br /&gt;
     border: none !important;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-background {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     z-index: 4;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-elt {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     cursor: default;&lt;br /&gt;
     z-index: 4;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-wrapper ::selection {&lt;br /&gt;
     background-color: transparent &lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-wrapper ::-moz-selection {&lt;br /&gt;
     background-color: transparent &lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lines {&lt;br /&gt;
     cursor: text;&lt;br /&gt;
     min-height: 1px;&lt;br /&gt;
    /* prevents collapsing before first draw */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror pre {&lt;br /&gt;
    /* Reset some styles that the rest of the page might have set */&lt;br /&gt;
     -moz-border-radius: 0;&lt;br /&gt;
     -webkit-border-radius: 0;&lt;br /&gt;
     border-radius: 0;&lt;br /&gt;
     border-width: 0;&lt;br /&gt;
     background: transparent;&lt;br /&gt;
     font-family: inherit;&lt;br /&gt;
     font-size: inherit;&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     white-space: pre;&lt;br /&gt;
     word-wrap: normal;&lt;br /&gt;
     line-height: inherit;&lt;br /&gt;
     color: inherit;&lt;br /&gt;
     z-index: 2;&lt;br /&gt;
     position: relative;&lt;br /&gt;
     overflow: visible;&lt;br /&gt;
     -webkit-tap-highlight-color: transparent;&lt;br /&gt;
     -webkit-font-variant-ligatures: contextual;&lt;br /&gt;
     font-variant-ligatures: contextual;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-wrap pre {&lt;br /&gt;
     word-wrap: break-word;&lt;br /&gt;
     white-space: pre-wrap;&lt;br /&gt;
     word-break: normal;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linebackground {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     right: 0;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     z-index: 0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linewidget {&lt;br /&gt;
     position: relative;&lt;br /&gt;
     z-index: 2;&lt;br /&gt;
     padding: 0.1px;&lt;br /&gt;
    /* Force widget margins to stay inside of the container */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-widget {&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-rtl pre {&lt;br /&gt;
     direction: rtl;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-code {&lt;br /&gt;
     font-family: &amp;quot;Lucida Console&amp;quot;, &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace !important;&lt;br /&gt;
     font-size: 16px;&lt;br /&gt;
     outline: none;&lt;br /&gt;
}&lt;br /&gt;
/* Force content-box sizing for the elements where we expect it */&lt;br /&gt;
 .CodeMirror-scroll, .CodeMirror-sizer, .CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber {&lt;br /&gt;
     -moz-box-sizing: content-box;&lt;br /&gt;
     box-sizing: content-box;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-measure {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     width: 100%;&lt;br /&gt;
     height: 0;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     visibility: hidden;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-cursor {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-measure pre {&lt;br /&gt;
     position: static;&lt;br /&gt;
}&lt;br /&gt;
 div.CodeMirror-cursors {&lt;br /&gt;
     visibility: hidden;&lt;br /&gt;
     position: relative;&lt;br /&gt;
     z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
 div.CodeMirror-dragcursors {&lt;br /&gt;
     visibility: visible;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-focused div.CodeMirror-cursors {&lt;br /&gt;
     visibility: visible;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-selected {&lt;br /&gt;
     background: #d9d9d9;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-focused .CodeMirror-selected {&lt;br /&gt;
     background: #d7d4f0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-crosshair {&lt;br /&gt;
     cursor: crosshair;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-line::selection, .CodeMirror-line &amp;gt; span::selection, .CodeMirror-line &amp;gt; span &amp;gt; span::selection {&lt;br /&gt;
     background: #d7d4f0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-line::-moz-selection, .CodeMirror-line &amp;gt; span::-moz-selection, .CodeMirror-line &amp;gt; span &amp;gt; span::-moz-selection {&lt;br /&gt;
     background: #d7d4f0;&lt;br /&gt;
}&lt;br /&gt;
 .cm-searching {&lt;br /&gt;
     background-color: #ffa;&lt;br /&gt;
     background-color: rgba(255, 255, 0, .4);&lt;br /&gt;
}&lt;br /&gt;
/* Used to force a border model for a node */&lt;br /&gt;
 .cm-force-border {&lt;br /&gt;
     padding-right: .1px;&lt;br /&gt;
}&lt;br /&gt;
 @media print {&lt;br /&gt;
    /* Hide the cursor when printing */&lt;br /&gt;
     .CodeMirror div.CodeMirror-cursors {&lt;br /&gt;
         visibility: hidden;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
/* See issue #2901 */&lt;br /&gt;
 .cm-tab-wrap-hack:after {&lt;br /&gt;
     content: &#039;&#039;;&lt;br /&gt;
}&lt;br /&gt;
/* Help users use markselection to safely style text background */&lt;br /&gt;
 span.CodeMirror-selectedtext {&lt;br /&gt;
     background: none;&lt;br /&gt;
}&lt;br /&gt;
/* foldgutter */&lt;br /&gt;
 .CodeMirror-foldmarker {&lt;br /&gt;
     color: blue;&lt;br /&gt;
     text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px;&lt;br /&gt;
     font-family: arial;&lt;br /&gt;
     line-height: .3;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter {&lt;br /&gt;
     width: .7em;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded {&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter-open:after {&lt;br /&gt;
     content: &amp;quot;\25BE&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter-folded:after {&lt;br /&gt;
     content: &amp;quot;\25B8&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
/* The lint marker gutter */&lt;br /&gt;
 .CodeMirror-lint-markers {&lt;br /&gt;
     width: 16px;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-tooltip {&lt;br /&gt;
     background-color: #ffd;&lt;br /&gt;
     border: 1px solid black;&lt;br /&gt;
     border-radius: 4px 4px 4px 4px;&lt;br /&gt;
     color: black;&lt;br /&gt;
     font-family: monospace;&lt;br /&gt;
     font-size: 10pt;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     padding: 2px 5px;&lt;br /&gt;
     position: fixed;&lt;br /&gt;
     white-space: pre;&lt;br /&gt;
     white-space: pre-wrap;&lt;br /&gt;
     z-index: 100;&lt;br /&gt;
     max-width: 600px;&lt;br /&gt;
     opacity: 0;&lt;br /&gt;
     transition: opacity .4s;&lt;br /&gt;
     -moz-transition: opacity .4s;&lt;br /&gt;
     -webkit-transition: opacity .4s;&lt;br /&gt;
     -o-transition: opacity .4s;&lt;br /&gt;
     -ms-transition: opacity .4s;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {&lt;br /&gt;
     background-position: left bottom;&lt;br /&gt;
     background-repeat: repeat-x;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-mark-error {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-mark-warning {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {&lt;br /&gt;
     background-position: center center;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     display: inline-block;&lt;br /&gt;
     height: 16px;&lt;br /&gt;
     width: 16px;&lt;br /&gt;
     vertical-align: middle;&lt;br /&gt;
     position: relative;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {&lt;br /&gt;
     padding-left: 18px;&lt;br /&gt;
     background-position: top left;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-multiple {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC&amp;quot;);&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
     background-position: right bottom;&lt;br /&gt;
     width: 100%;&lt;br /&gt;
     height: 100%;&lt;br /&gt;
}&lt;br /&gt;
/* MDN-LIKE Theme - Mozilla Ported to CodeMirror by Peter Kroon &amp;lt;plakroon@gmail.com&amp;gt; Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues GitHub: @peterkroon The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation */&lt;br /&gt;
 .cm-s-mdn-like.CodeMirror {&lt;br /&gt;
     color: #999;&lt;br /&gt;
     background-color: #fff;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like div.CodeMirror-selected {&lt;br /&gt;
     background: #cfc;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span::selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span &amp;gt; span::selection {&lt;br /&gt;
     background: #cfc;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span::-moz-selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span &amp;gt; span::-moz-selection {&lt;br /&gt;
     background: #cfc;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-gutters, .cm-s-neo .CodeMirror-gutters {&lt;br /&gt;
     background: #f8f8f8;&lt;br /&gt;
     border-left: 6px solid rgba(0,83,159,0.65);&lt;br /&gt;
     color: #333;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-linenumber, .cm-s-neo .CodeMirror-linenumber {&lt;br /&gt;
     color: #aaa;&lt;br /&gt;
     padding-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-cursor {&lt;br /&gt;
     border-left: 2px solid #222;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-keyword {&lt;br /&gt;
     color: #6262FF;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-atom {&lt;br /&gt;
     color: #F90;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-number {&lt;br /&gt;
     color: #ca7841;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-def {&lt;br /&gt;
     color: #8DA6CE;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag {&lt;br /&gt;
     color: #690;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def, .cm-s-mdn-like span.cm-type {&lt;br /&gt;
     color: #07a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-variable {&lt;br /&gt;
     color: #07a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-property {&lt;br /&gt;
     color: #905;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-qualifier {&lt;br /&gt;
     color: #690;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-operator {&lt;br /&gt;
     color: #cda869;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-comment {&lt;br /&gt;
     color:#777;&lt;br /&gt;
     font-weight:normal;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-string {&lt;br /&gt;
     color:#07a;&lt;br /&gt;
     font-style:italic;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-string-2 {&lt;br /&gt;
     color:#bd6b18;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-meta {&lt;br /&gt;
     color: #000;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-builtin {&lt;br /&gt;
     color: #9B7536;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-tag {&lt;br /&gt;
     color: #997643;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-attribute {&lt;br /&gt;
     color: #d6bb6d;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-header {&lt;br /&gt;
     color: #FF6400;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-hr {&lt;br /&gt;
     color: #AEAEAE;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-link {&lt;br /&gt;
     color:#ad9361;&lt;br /&gt;
     font-style:italic;&lt;br /&gt;
     text-decoration:none;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-error {&lt;br /&gt;
     border-bottom: 1px solid red;&lt;br /&gt;
}&lt;br /&gt;
 div.cm-s-mdn-like .CodeMirror-activeline-background {&lt;br /&gt;
     background: #efefff;&lt;br /&gt;
}&lt;br /&gt;
 div.cm-s-mdn-like span.CodeMirror-matchingbracket {&lt;br /&gt;
     outline:1px solid grey;&lt;br /&gt;
     color: inherit;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like.CodeMirror, .cm-s-neo.CodeMirror {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAHvklEQVR42s2b63bcNgyEQZCSHCdt2vd/0tWF7I+Q6XgMXiTtuvU5Pl57ZQKkKHzEAOtF5KeIJBGJ8uvL599FRFREZhFx8DeXv8trn68RuGaC8TRfo3SNp9dlDDHedyLyTUTeRWStXKPZrjtpZxaRw5hPqozRs1N8/enzIiQRWcCgy4MUA0f+XWliDhyL8Lfyvx7ei/Ae3iQFHyw7U/59pQVIMEEPEz0G7XiwdRjzSfC3UTtz9vchIntxvry5iMgfIhJoEflOz2CQr3F5h/HfeFe+GTdLaKcu9L8LTeQb/R/7GgbsfKedyNdoHsN31uRPWrfZ5wsj/NzzRQHuToIdU3ahwnsKPxXCjJITuOsi7XLc7SG/v5GdALs7wf8JjTFiB5+QvTEfRyGOfX3Lrx8wxyQi3sNq46O7QahQiCsRFgqddjBouVEHOKDgXAQHD9gJCr5sMKkEdjwsarG/ww3BMHBU7OBjXnzdyY7SfCxf5/z6ATccrwlKuwC/jhznnPF4CgVzhhVf4xp2EixcBActO75iZ8/fM9zAs2OMzKdslgXWJ9XG8PQoOAMA5fGcsvORgv0doBXyHrCwfLJAOwo71QLNkb8n2Pl6EWiR7OCibtkPaz4Kc/0NNAze2gju3zOwekALDaCFPI5vjPFmgGY5AZqyGEvH1x7QfIb8YtxMnA/b+QQ0aQDAwc6JMFg8CbQZ4qoYEEHbRwNojuK3EHwd7VALSgq+MNDKzfT58T8qdpADrgW0GmgcAS1lhzztJmkAzcPNOQbsWEALBDSlMKUG0Eq4CLAQWvEVQ9WU57gZJwZtgPO3r9oBTQ9WO8TjqXINx8R0EYpiZEUWOF3FxkbJkgU9B2f41YBrIj5ZfsQa0M5kTgiAAqM3ShXLgu8XMqcrQBvJ0CL5pnTsfMB13oB8athpAq2XOQmcGmoACCLydx7nToa23ATaSIY2ichfOdPTGxlasXMLaL0MLZAOwAKIM+y8CmicobGdCcbbK9DzN+yYGVoNNI5iUKTMyYOjPse4A8SM1MmcXgU0toOq1yO/v8FOxlASyc7TgeYaAMBJHcY1CcCwGI/TK4AmDbDyKYBBtFUkRwto8gygiQEaByFgJ00BH2M8JWwQS1nafDXQCidWyOI8AcjDCSjCLk8ngObuAm3JAHAdubAmOaK06V8MNEsKPJOhobSprwQa6gD7DclRQdqcwL4zxqgBrQcabUiBLclRDKAlWp+etPkBaNMA0AKlrHwTdEByZAA4GM+SNluSY6wAzcMNewxmgig5Ks0nkrSpBvSaQHMdKTBAnLojOdYyGpQ254602ZILPdTD1hdlggdIm74jbTp8vDwF5ZYUeLWGJpWsh6XNyXgcYwVoJQTEhhTYkxzZjiU5npU2TaB979TQehlaAVq4kaGpiPwwwLkYUuBbQwocyQTv1tA0+1UFWoJF3iv1oq+qoSk8EQdJmwHkziIF7oOZk14EGitibAdjLYYK78H5vZOhtWpoI0ATGHs0Q8OMb4Ey+2bU2UYztCtA0wFAs7TplGLRVQCcqaFdGSPCeTI1QNIC52iWNzof6Uib7xjEp07mNNoUYmVosVItHrHzRlLgBn9LFyRHaQCtVUMbtTNhoXWiTOO9k/V8BdAc1Oq0ArSQs6/5SU0hckNy9NnXqQY0PGYo5dWJ7nINaN6o958FWin27aBaWRka1r5myvLOAm0j30eBJqCxHLReVclxhxOEN2JfDWjxBtAC7MIH1fVaGdoOp4qJYDgKtKPSFNID2gSnGldrCqkFZ+5UeQXQBIRrSwocbdZYQT/2LwRahBPBXoHrB8nxaGROST62DKUbQOMMzZIC9abkuELfQzQALWTnDNAm8KHWFOJgJ5+SHIvTPcmx1xQyZRhNL5Qci689aXMEaN/uNIWkEwDAvFpOZmgsBaaGnbs1NPa1Jm32gBZAIh1pCtG7TSH4aE0y1uVY4uqoFPisGlpP2rSA5qTecWn5agK6BzSpgAyD+wFaqhnYoSZ1Vwr8CmlTQbrcO3ZaX0NAEyMbYaAlyquFoLKK3SPby9CeVUPThrSJmkCAE0CrKUQadi4DrdSlWhmah0YL9z9vClH59YGbHx1J8VZTyAjQepJjmXwAKTDQI3omc3p1U4gDUf6RfcdYfrUp5ClAi2J3Ba6UOXGo+K+bQrjjssitG2SJzshaLwMtXgRagUNpYYoVkMSBLM+9GGiJZMvduG6DRZ4qc04DMPtQQxOjEtACmhO7K1AbNbQDEggZyJwscFpAGwENhoBeUwh3bWolhe8BTYVKxQEWrSUn/uhcM5KhvUu/+eQu0Lzhi+VrK0PrZZNDQKs9cpYUuFYgMVpD4/NxenJTiMCNqdUEUf1qZWjppLT5qSkkUZbCwkbZMSuVnu80hfSkzRbQeqCZSAh6huR4VtoM2gHAlLf72smuWgE+VV7XpE25Ab2WFDgyhnSuKbs4GuGzCjR+tIoUuMFg3kgcWKLTwRqanJQ2W00hAsenfaApRC42hbCvK1SlE0HtE9BGgneJO+ELamitD1YjjOYnNYVcraGhtKkW0EqVVeDx733I2NH581k1NNxNLG0i0IJ8/NjVaOZ0tYZ2Vtr0Xv7tPV3hkWp9EFkgS/J0vosngTaSoaG06WHi+xObQkaAdlbanP8B2+2l0f90LmUAAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
/* Fullscreen */&lt;br /&gt;
.CodeMirror-fullscreen {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    top: 0; &lt;br /&gt;
    left: 13em; &lt;br /&gt;
    right: 0; &lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    z-index: 9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hints */&lt;br /&gt;
.CodeMirror-hints {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     z-index: 10;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     list-style: none;&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     padding: 2px;&lt;br /&gt;
     -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
     -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
     box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
     border-radius: 3px;&lt;br /&gt;
     border: 1px solid silver;&lt;br /&gt;
     background: white;&lt;br /&gt;
     font-size: 90%;&lt;br /&gt;
     font-family: monospace;&lt;br /&gt;
     max-height: 20em;&lt;br /&gt;
     overflow-y: auto;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-hint {&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     padding: 0 4px;&lt;br /&gt;
     border-radius: 2px;&lt;br /&gt;
     white-space: pre;&lt;br /&gt;
     color: black;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
 li.CodeMirror-hint-active {&lt;br /&gt;
     background: #08f;&lt;br /&gt;
     color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dialog */&lt;br /&gt;
.CodeMirror-dialog {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0; right: 0;&lt;br /&gt;
  background: inherit;&lt;br /&gt;
  z-index: 15;&lt;br /&gt;
  padding: .1em .8em;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
  color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog-top {&lt;br /&gt;
  border-bottom: 1px solid #eee;&lt;br /&gt;
  top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog-bottom {&lt;br /&gt;
  border-top: 1px solid #eee;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog input {&lt;br /&gt;
  border: none;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  width: 20em;&lt;br /&gt;
  color: inherit;&lt;br /&gt;
  font-family: monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog button {&lt;br /&gt;
  font-size: 70%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tern */&lt;br /&gt;
.CodeMirror-Tern-completion {&lt;br /&gt;
  padding-left: 22px;&lt;br /&gt;
  position: relative;&lt;br /&gt;
  line-height: 1.5;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion:before {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 2px;&lt;br /&gt;
  bottom: 2px;&lt;br /&gt;
  border-radius: 50%;&lt;br /&gt;
  font-size: 12px;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  height: 15px;&lt;br /&gt;
  width: 15px;&lt;br /&gt;
  line-height: 16px;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  color: white;&lt;br /&gt;
  -moz-box-sizing: border-box;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-unknown:before {&lt;br /&gt;
  content: &amp;quot;?&amp;quot;;&lt;br /&gt;
  background: #4bb;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-object:before {&lt;br /&gt;
  content: &amp;quot;O&amp;quot;;&lt;br /&gt;
  background: #77c;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-fn:before {&lt;br /&gt;
  content: &amp;quot;F&amp;quot;;&lt;br /&gt;
  background: #7c7;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-array:before {&lt;br /&gt;
  content: &amp;quot;A&amp;quot;;&lt;br /&gt;
  background: #c66;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-number:before {&lt;br /&gt;
  content: &amp;quot;1&amp;quot;;&lt;br /&gt;
  background: #999;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-string:before {&lt;br /&gt;
  content: &amp;quot;S&amp;quot;;&lt;br /&gt;
  background: #999;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-bool:before {&lt;br /&gt;
  content: &amp;quot;B&amp;quot;;&lt;br /&gt;
  background: #999;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-completion-guess {&lt;br /&gt;
  color: #999;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-tooltip {&lt;br /&gt;
  border: 1px solid silver;&lt;br /&gt;
  border-radius: 3px;&lt;br /&gt;
  color: #444;&lt;br /&gt;
  padding: 2px 5px;&lt;br /&gt;
  font-size: 90%;&lt;br /&gt;
  font-family: monospace;&lt;br /&gt;
  background-color: white;&lt;br /&gt;
  white-space: pre-wrap;&lt;br /&gt;
&lt;br /&gt;
  max-width: 40em;&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  z-index: 10;&lt;br /&gt;
  -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
  -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
  box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
&lt;br /&gt;
  transition: opacity 1s;&lt;br /&gt;
  -moz-transition: opacity 1s;&lt;br /&gt;
  -webkit-transition: opacity 1s;&lt;br /&gt;
  -o-transition: opacity 1s;&lt;br /&gt;
  -ms-transition: opacity 1s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-hint-doc {&lt;br /&gt;
  max-width: 25em;&lt;br /&gt;
  margin-top: -3px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-fname { color: black; }&lt;br /&gt;
.CodeMirror-Tern-farg { color: #70a; }&lt;br /&gt;
.CodeMirror-Tern-farg-current { text-decoration: underline; }&lt;br /&gt;
.CodeMirror-Tern-type { color: #07c; }&lt;br /&gt;
.CodeMirror-Tern-fhint-guess { opacity: .7; }&lt;br /&gt;
&lt;br /&gt;
/* neo theme for codemirror */&lt;br /&gt;
&lt;br /&gt;
/* Color scheme */&lt;br /&gt;
&lt;br /&gt;
.cm-s-neo.CodeMirror {&lt;br /&gt;
  background-color:#ffffff;&lt;br /&gt;
  color:#2e383c;&lt;br /&gt;
  line-height:1.4375;&lt;br /&gt;
}&lt;br /&gt;
.cm-s-neo .cm-comment { color:#75787b; }&lt;br /&gt;
.cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; }&lt;br /&gt;
.cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; }&lt;br /&gt;
.cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; }&lt;br /&gt;
.cm-s-neo .cm-string { color:#b35e14; }&lt;br /&gt;
.cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Editor styling */&lt;br /&gt;
&lt;br /&gt;
.cm-s-neo pre {&lt;br /&gt;
  padding:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; }&lt;br /&gt;
.cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; }&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------*/&lt;br /&gt;
/* Universal */&lt;br /&gt;
 button{&lt;br /&gt;
     float: left;&lt;br /&gt;
     line-height: 1.3;&lt;br /&gt;
     padding: 5px 8px;&lt;br /&gt;
}&lt;br /&gt;
 button.run {&lt;br /&gt;
     background-image: linear-gradient(to bottom, #337AB7 0px, #265A88 100%);&lt;br /&gt;
     background-color: #306AA0;&lt;br /&gt;
     border-radius: 6px;&lt;br /&gt;
     border-color: #245580;&lt;br /&gt;
     border-width: 1px;&lt;br /&gt;
     color: #FFF;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     font-size: 18px;&lt;br /&gt;
}&lt;br /&gt;
 button.other {&lt;br /&gt;
     border-radius: 0.5ex;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     display: inline;&lt;br /&gt;
     border: 1px solid;&lt;br /&gt;
     float: right;&lt;br /&gt;
     font-size: 14px;&lt;br /&gt;
     margin-left: 0.25em;&lt;br /&gt;
}&lt;br /&gt;
 code {&lt;br /&gt;
     background-color: #e6e6e6;&lt;br /&gt;
}&lt;br /&gt;
 div.guidelist{&lt;br /&gt;
     float: right;&lt;br /&gt;
     width: 32ex;&lt;br /&gt;
     border-left: 1px solid;&lt;br /&gt;
     border-right: 1px solid;&lt;br /&gt;
     background-color: #F0F0FF;&lt;br /&gt;
     border-collapse: collapse;&lt;br /&gt;
     border-bottom: 1px solid;&lt;br /&gt;
     margin-bottom: 2%;&lt;br /&gt;
     padding-left: 0px;&lt;br /&gt;
}&lt;br /&gt;
 div.guidelist div.fc {&lt;br /&gt;
     padding: 1em;&lt;br /&gt;
     background-color: #000;&lt;br /&gt;
     color: #FFF;&lt;br /&gt;
}&lt;br /&gt;
 div.guidelist div {&lt;br /&gt;
     padding: 0ex 1em;&lt;br /&gt;
     border-bottom: 1px solid;&lt;br /&gt;
}&lt;br /&gt;
div.res.waiting {&lt;br /&gt;
     background-image: url(/mw/design/spinner.gif) !important;&lt;br /&gt;
     background-repeat: no-repeat !important;;&lt;br /&gt;
     background-position: center center !important;;&lt;br /&gt;
     height: 180px;&lt;br /&gt;
}&lt;br /&gt;
 h1#firstHeading{&lt;br /&gt;
     overflow-x: hidden;&lt;br /&gt;
}&lt;br /&gt;
 pre{&lt;br /&gt;
     border-color: #949494;&lt;br /&gt;
     white-space: pre-wrap;&lt;br /&gt;
    /* CSS 3 */&lt;br /&gt;
     white-space: -moz-pre-wrap;&lt;br /&gt;
    /* Mozilla, since 1999 */&lt;br /&gt;
     white-space: -pre-wrap;&lt;br /&gt;
    /* Opera 4-6 */&lt;br /&gt;
     white-space: -o-pre-wrap;&lt;br /&gt;
    /* Opera 7 */&lt;br /&gt;
     word-wrap: break-word;&lt;br /&gt;
    /* Internet Explorer 5.5+ */&lt;br /&gt;
}&lt;br /&gt;
 span.id{&lt;br /&gt;
     font-size:300%;&lt;br /&gt;
     padding-right:1ex &lt;br /&gt;
}&lt;br /&gt;
 textarea{&lt;br /&gt;
     background: #F9F9F9;&lt;br /&gt;
     font-family: &amp;quot;Lucida Console&amp;quot;, &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
     font-size: 16px;&lt;br /&gt;
     margin: 1em 0;&lt;br /&gt;
     min-height: 150px;&lt;br /&gt;
     resize: vertical;&lt;br /&gt;
}&lt;br /&gt;
 .strong{&lt;br /&gt;
     font-weight:bold;&lt;br /&gt;
}&lt;br /&gt;
 .tease {&lt;br /&gt;
     color: #1D365D;&lt;br /&gt;
     font-style: italic;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     padding: 0.2ex;&lt;br /&gt;
}&lt;br /&gt;
 .q{&lt;br /&gt;
     border-top: thin solid #ee8301;&lt;br /&gt;
     margin-bottom: 9em;&lt;br /&gt;
     width: 100%;&lt;br /&gt;
}&lt;br /&gt;
 .q .ans, .q .def, .q .res{&lt;br /&gt;
     font-weight: normal;&lt;br /&gt;
     display: none;&lt;br /&gt;
}&lt;br /&gt;
 .q .res{&lt;br /&gt;
     background: rgba(246, 246, 246, 1);&lt;br /&gt;
     border: solid thin black;&lt;br /&gt;
     border-radius: 0.5ex;&lt;br /&gt;
     border-style: inset;&lt;br /&gt;
     border-width: 1px;&lt;br /&gt;
     box-shadow: 1px 1px 3px #3b434e;&lt;br /&gt;
     color: #3b434e;&lt;br /&gt;
     clear:both;&lt;br /&gt;
     height: auto;&lt;br /&gt;
     margin-top: 1ex;&lt;br /&gt;
     max-width: 100%;&lt;br /&gt;
     overflow: auto;&lt;br /&gt;
     padding: 1em;&lt;br /&gt;
     resize: both;&lt;br /&gt;
}&lt;br /&gt;
 .setup{&lt;br /&gt;
     display: none;&lt;br /&gt;
}&lt;br /&gt;
 .tease{&lt;br /&gt;
     color:#1d365d;&lt;br /&gt;
     font-style:italic;&lt;br /&gt;
     cursor:pointer;&lt;br /&gt;
     padding: 0.2ex;&lt;br /&gt;
}&lt;br /&gt;
 @media all and (max-width: 768px){&lt;br /&gt;
     div.vectorTabs{&lt;br /&gt;
         padding: 0;&lt;br /&gt;
    }&lt;br /&gt;
     .guidelist{&lt;br /&gt;
         display: none;&lt;br /&gt;
    }&lt;br /&gt;
     .mw-body{&lt;br /&gt;
         border-left: 0;&lt;br /&gt;
         margin-left: 0;&lt;br /&gt;
    }&lt;br /&gt;
     div#footer{&lt;br /&gt;
         margin-left: 0;&lt;br /&gt;
    }&lt;br /&gt;
     #mw-panel{&lt;br /&gt;
         display:none;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 .qcorrect{&lt;br /&gt;
     background-image: url(//sqlzoo.net/design/done9.png);&lt;br /&gt;
}&lt;br /&gt;
 .qincorrect {&lt;br /&gt;
     background-image:url(//sqlzoo.net/design/undone9.png);&lt;br /&gt;
}&lt;br /&gt;
 .qcorrect, .qincorrect {&lt;br /&gt;
     width: 3em;&lt;br /&gt;
     height: 3em;&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     margin: 0em 0 0 5em;&lt;br /&gt;
     background-size: 3em;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
     background-position: center;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.css&amp;diff=1457</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.css&amp;diff=1457"/>
		<updated>2025-03-29T18:42:04Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;body.page-Main_Page.action-view #siteSub,&lt;br /&gt;
body.page-Main_Page.action-submit #siteSub {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-cookiewarning-container {&lt;br /&gt;
    position: static !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CodeMirror */&lt;br /&gt;
/*---------------------------------------------------------------*/&lt;br /&gt;
/* BASICS */&lt;br /&gt;
 .CodeMirror {&lt;br /&gt;
    /* Set height, width, borders, and global font properties here */&lt;br /&gt;
     font-family: monospace;&lt;br /&gt;
     height: auto!important;&lt;br /&gt;
     color: black;&lt;br /&gt;
     direction: ltr;&lt;br /&gt;
     border-width: 1px 1px 1px 0px;&lt;br /&gt;
     border-color: grey;&lt;br /&gt;
     border-style: solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 .CodeMirror, .CodeMirror-scroll, .CodeMirror-gutters {&lt;br /&gt;
       min-height: 150px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* PADDING */&lt;br /&gt;
 .CodeMirror-lines {&lt;br /&gt;
     padding: 4px 0;&lt;br /&gt;
    /* Vertical padding around content */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror pre {&lt;br /&gt;
     padding: 0 4px;&lt;br /&gt;
    /* Horizontal padding of content */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {&lt;br /&gt;
     background-color: white;&lt;br /&gt;
    /* The little square between H and V scrollbars */&lt;br /&gt;
}&lt;br /&gt;
/* GUTTER */&lt;br /&gt;
 .CodeMirror-gutters {&lt;br /&gt;
     border-right: 1px solid #ddd;&lt;br /&gt;
     background-color: #f7f7f7;&lt;br /&gt;
     white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linenumbers {&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linenumber {&lt;br /&gt;
     padding: 0 3px 0 5px;&lt;br /&gt;
     min-width: 20px;&lt;br /&gt;
     text-align: right;&lt;br /&gt;
     color: #999;&lt;br /&gt;
     white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-guttermarker {&lt;br /&gt;
     color: black;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-guttermarker-subtle {&lt;br /&gt;
     color: #999;&lt;br /&gt;
}&lt;br /&gt;
/** CodeMirror **/&lt;br /&gt;
/* CURSOR */&lt;br /&gt;
 .CodeMirror-cursor {&lt;br /&gt;
     border-left: 1px solid black;&lt;br /&gt;
     border-right: none;&lt;br /&gt;
     width: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Shown when moving in bi-directional text */&lt;br /&gt;
 .CodeMirror div.CodeMirror-secondarycursor {&lt;br /&gt;
     border-left: 1px solid silver;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 .cm-fat-cursor .CodeMirror-cursor {&lt;br /&gt;
     width: auto;&lt;br /&gt;
     border: 0 !important;&lt;br /&gt;
     background: #7e7;&lt;br /&gt;
}&lt;br /&gt;
 .cm-fat-cursor div.CodeMirror-cursors {&lt;br /&gt;
     z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
 .cm-fat-cursor-mark {&lt;br /&gt;
     background-color: rgba(20, 255, 20, 0.5);&lt;br /&gt;
     -webkit-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     -moz-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
}&lt;br /&gt;
 .cm-animate-fat-cursor {&lt;br /&gt;
     width: auto;&lt;br /&gt;
     border: 0;&lt;br /&gt;
     -webkit-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     -moz-animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     animation: blink 1.06s steps(1) infinite;&lt;br /&gt;
     background-color: #7e7;&lt;br /&gt;
}&lt;br /&gt;
 @-moz-keyframes blink {&lt;br /&gt;
     0% {&lt;br /&gt;
    }&lt;br /&gt;
     50% {&lt;br /&gt;
         background-color: transparent;&lt;br /&gt;
    }&lt;br /&gt;
     100% {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 @-webkit-keyframes blink {&lt;br /&gt;
     0% {&lt;br /&gt;
    }&lt;br /&gt;
     50% {&lt;br /&gt;
         background-color: transparent;&lt;br /&gt;
    }&lt;br /&gt;
     100% {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 @keyframes blink {&lt;br /&gt;
     0% {&lt;br /&gt;
    }&lt;br /&gt;
     50% {&lt;br /&gt;
         background-color: transparent;&lt;br /&gt;
    }&lt;br /&gt;
     100% {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
/* Can style cursor different in overwrite (non-insert) mode */&lt;br /&gt;
 .CodeMirror-overwrite .CodeMirror-cursor {&lt;br /&gt;
}&lt;br /&gt;
 .cm-tab {&lt;br /&gt;
     display: inline-block;&lt;br /&gt;
     text-decoration: inherit;&lt;br /&gt;
     background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);&lt;br /&gt;
     background-position: right;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
.cm-trailingspace {&lt;br /&gt;
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAADBnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHja7ZZRjiMpDIbfOcUcAdsYm+NQBUh7gz3+/FAk6aR7WppWXlbaQikoxxjzfy6S0P/9Z4RfuChpDEnNc8k54kolFa4YeLyuq6eY1v260u7p2R4i7y8YJkEv12Pu27/Cro8JtgPR8WwPdu44vgPdVt4BZa48F9t+vgMJX3baz6HseTV92M7+iF353pxfn5NBjKYwCgfuQhJx57mKIANxqeht3RNPC69xxl2n31fahfvwRbyb3q/axbo95FmKEPN2yC8abTvp19othT5mRLchP39R5A76k3ZjNB+jX7urKUOpHPam4g6xRnA8IKWsaRnN8FGMbbWC5tjiCdEbaB5oZ6BCDLUHJWpUaVBf/UknUkzc2dAznyzL5mJc+FxQ0mw02KRIC2DEcoKawMz3XGitW9Z6JzlWbgRPJgSbFD+18JXxJ+0eaIxZukRTTL+0Ql48qwZpTHLzDi8goLE11aXvauGO9XFNsJOZLpkdG6zxuEIcSo/aksVZ4KcxhQ2ZrO0AkAhrK5IhAYGYSZQyRWM2Iujo4FOROaPsDxAgVW4UBtiIZMBxnmtjjtHyZeXLjKMFIBSviAFNkQpYKSnqx5KjhqqKpqCqWU1di9YsOWXNOVueZ1Q1sWRq2czcilUXT66e3dy9eC1cBEeYllwsFC+l1IpFK0JXzK7wqPXgQ4506JEPO/woRz1RPmc69cynnX6WszZu0vD6t9wsNG+l1U4dpdRT1567de+l14FaGzLS0JGHDR9l1Du1TfWZGr2Q+54abWqTWFp+9qAGs9ktBM3jRCczEONEIG6TAAqaJ7PolBJPcpNZLIyXQhnUSCecRpMYCKZOrIPu7B7kvuUWNP0VN/4TuTDRvYNcmOg2uc/cvqDW6vpFkQVovoVT0ygDBxscK3vlo8dz4CfB51P82z78dOL/gf5TgYb7NRwHivOIq3Qcgfbg1ktvPyqr8KaEYnhTQhzelFANb0rIw5sSurb2hoTW1j4siPMG/07Db7o4rMFM+1KDAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gcECwY00aHnvAAAACFJREFUCNdj/P8ss56BgaGBAQKYmBgYGBoYpaYzQgX/AQB32QYEphperwAAAABJRU5ErkJggg==);&lt;br /&gt;
    background-position: bottom left;&lt;br /&gt;
    background-repeat: repeat-x;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-rulers {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     right: 0;&lt;br /&gt;
     top: -50px;&lt;br /&gt;
     bottom: -20px;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-ruler {&lt;br /&gt;
     border-left: 1px solid #ccc;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     position: absolute;&lt;br /&gt;
}&lt;br /&gt;
/** CodeMirror **/&lt;br /&gt;
/* DEFAULT THEME */&lt;br /&gt;
 .cm-s-default .cm-header {&lt;br /&gt;
     color: blue;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-quote {&lt;br /&gt;
     color: #090;&lt;br /&gt;
}&lt;br /&gt;
 .cm-negative {&lt;br /&gt;
     color: #d44;&lt;br /&gt;
}&lt;br /&gt;
 .cm-positive {&lt;br /&gt;
     color: #292;&lt;br /&gt;
}&lt;br /&gt;
 .cm-header, .cm-strong {&lt;br /&gt;
     font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
 .cm-em {&lt;br /&gt;
     font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
 .cm-link {&lt;br /&gt;
     text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
 .cm-strikethrough {&lt;br /&gt;
     text-decoration: line-through;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-keyword {&lt;br /&gt;
     color: #708;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-atom {&lt;br /&gt;
     color: #219;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-number {&lt;br /&gt;
     color: #164;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-def {&lt;br /&gt;
     color: #00f;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-variable, .cm-s-default .cm-punctuation, .cm-s-default .cm-property, .cm-s-default .cm-operator {&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-variable-2 {&lt;br /&gt;
     color: #05a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-variable-3, .cm-s-default .cm-type {&lt;br /&gt;
     color: #085;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-comment {&lt;br /&gt;
     color: #a50;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-string {&lt;br /&gt;
     color: #a11;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-string-2 {&lt;br /&gt;
     color: #f50;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-meta {&lt;br /&gt;
     color: #555;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-qualifier {&lt;br /&gt;
     color: #555;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-builtin {&lt;br /&gt;
     color: #30a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-bracket {&lt;br /&gt;
     color: #997;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-tag {&lt;br /&gt;
     color: #170;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-attribute {&lt;br /&gt;
     color: #00c;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-hr {&lt;br /&gt;
     color: #999;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-link {&lt;br /&gt;
     color: #00c;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-default .cm-error {&lt;br /&gt;
     color: #f00;&lt;br /&gt;
}&lt;br /&gt;
 .cm-invalidchar {&lt;br /&gt;
     color: #f00;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-composing {&lt;br /&gt;
     border-bottom: 2px solid;&lt;br /&gt;
}&lt;br /&gt;
/* Default styles for common addons */&lt;br /&gt;
 div.CodeMirror span.CodeMirror-matchingbracket {&lt;br /&gt;
     color: #0b0;&lt;br /&gt;
}&lt;br /&gt;
 div.CodeMirror span.CodeMirror-nonmatchingbracket {&lt;br /&gt;
     color: #a22;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-matchingtag {&lt;br /&gt;
     background: rgba(255, 150, 0, .3);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-activeline-background {&lt;br /&gt;
     background: #e8f2ff;&lt;br /&gt;
}&lt;br /&gt;
/* STOP */&lt;br /&gt;
/* The rest of this file contains styles related to the mechanics of the editor. You probably shouldn&#039;t touch them. */&lt;br /&gt;
 .CodeMirror {&lt;br /&gt;
     position: relative;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     background: white;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-scroll {&lt;br /&gt;
     overflow: hidden !important;&lt;br /&gt;
    /* Things will break if this is overridden */&lt;br /&gt;
    /* 30px is the magic margin used to hide the element&#039;s real scrollbars */&lt;br /&gt;
    /* See overflow: hidden in .CodeMirror */&lt;br /&gt;
     margin-bottom: -30px;&lt;br /&gt;
     margin-right: -30px;&lt;br /&gt;
     padding-bottom: 30px;&lt;br /&gt;
     height: 100%;&lt;br /&gt;
     outline: none;&lt;br /&gt;
    /* Prevent dragging from highlighting the element */&lt;br /&gt;
     position: relative;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-sizer {&lt;br /&gt;
     position: relative;&lt;br /&gt;
     border-right: 30px solid transparent;&lt;br /&gt;
}&lt;br /&gt;
/* The fake, visible scrollbars. Used to force redraw during scrolling before actual scrolling happens, thus preventing shaking and flickering artifacts. */&lt;br /&gt;
 .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     z-index: 6;&lt;br /&gt;
     display: none;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-vscrollbar {&lt;br /&gt;
     right: 0;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     overflow-x: hidden;&lt;br /&gt;
     overflow-y: scroll;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-hscrollbar {&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     overflow-y: hidden;&lt;br /&gt;
     overflow-x: scroll;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-scrollbar-filler {&lt;br /&gt;
     right: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-filler {&lt;br /&gt;
     left: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutters {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     min-height: 100%;&lt;br /&gt;
     z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter {&lt;br /&gt;
     white-space: normal;&lt;br /&gt;
     height: 100%;&lt;br /&gt;
     display: inline-block;&lt;br /&gt;
     vertical-align: top;&lt;br /&gt;
     margin-bottom: -30px;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-wrapper {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     z-index: 4;&lt;br /&gt;
     background: none !important;&lt;br /&gt;
     border: none !important;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-background {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     z-index: 4;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-elt {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     cursor: default;&lt;br /&gt;
     z-index: 4;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-wrapper ::selection {&lt;br /&gt;
     background-color: transparent &lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-gutter-wrapper ::-moz-selection {&lt;br /&gt;
     background-color: transparent &lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lines {&lt;br /&gt;
     cursor: text;&lt;br /&gt;
     min-height: 1px;&lt;br /&gt;
    /* prevents collapsing before first draw */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror pre {&lt;br /&gt;
    /* Reset some styles that the rest of the page might have set */&lt;br /&gt;
     -moz-border-radius: 0;&lt;br /&gt;
     -webkit-border-radius: 0;&lt;br /&gt;
     border-radius: 0;&lt;br /&gt;
     border-width: 0;&lt;br /&gt;
     background: transparent;&lt;br /&gt;
     font-family: inherit;&lt;br /&gt;
     font-size: inherit;&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     white-space: pre;&lt;br /&gt;
     word-wrap: normal;&lt;br /&gt;
     line-height: inherit;&lt;br /&gt;
     color: inherit;&lt;br /&gt;
     z-index: 2;&lt;br /&gt;
     position: relative;&lt;br /&gt;
     overflow: visible;&lt;br /&gt;
     -webkit-tap-highlight-color: transparent;&lt;br /&gt;
     -webkit-font-variant-ligatures: contextual;&lt;br /&gt;
     font-variant-ligatures: contextual;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-wrap pre {&lt;br /&gt;
     word-wrap: break-word;&lt;br /&gt;
     white-space: pre-wrap;&lt;br /&gt;
     word-break: normal;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linebackground {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     left: 0;&lt;br /&gt;
     right: 0;&lt;br /&gt;
     top: 0;&lt;br /&gt;
     bottom: 0;&lt;br /&gt;
     z-index: 0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-linewidget {&lt;br /&gt;
     position: relative;&lt;br /&gt;
     z-index: 2;&lt;br /&gt;
     padding: 0.1px;&lt;br /&gt;
    /* Force widget margins to stay inside of the container */&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-widget {&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-rtl pre {&lt;br /&gt;
     direction: rtl;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-code {&lt;br /&gt;
     font-family: &amp;quot;Lucida Console&amp;quot;, &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace !important;&lt;br /&gt;
     font-size: 16px;&lt;br /&gt;
     outline: none;&lt;br /&gt;
}&lt;br /&gt;
/* Force content-box sizing for the elements where we expect it */&lt;br /&gt;
 .CodeMirror-scroll, .CodeMirror-sizer, .CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber {&lt;br /&gt;
     -moz-box-sizing: content-box;&lt;br /&gt;
     box-sizing: content-box;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-measure {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     width: 100%;&lt;br /&gt;
     height: 0;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     visibility: hidden;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-cursor {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-measure pre {&lt;br /&gt;
     position: static;&lt;br /&gt;
}&lt;br /&gt;
 div.CodeMirror-cursors {&lt;br /&gt;
     visibility: hidden;&lt;br /&gt;
     position: relative;&lt;br /&gt;
     z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
 div.CodeMirror-dragcursors {&lt;br /&gt;
     visibility: visible;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-focused div.CodeMirror-cursors {&lt;br /&gt;
     visibility: visible;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-selected {&lt;br /&gt;
     background: #d9d9d9;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-focused .CodeMirror-selected {&lt;br /&gt;
     background: #d7d4f0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-crosshair {&lt;br /&gt;
     cursor: crosshair;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-line::selection, .CodeMirror-line &amp;gt; span::selection, .CodeMirror-line &amp;gt; span &amp;gt; span::selection {&lt;br /&gt;
     background: #d7d4f0;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-line::-moz-selection, .CodeMirror-line &amp;gt; span::-moz-selection, .CodeMirror-line &amp;gt; span &amp;gt; span::-moz-selection {&lt;br /&gt;
     background: #d7d4f0;&lt;br /&gt;
}&lt;br /&gt;
 .cm-searching {&lt;br /&gt;
     background-color: #ffa;&lt;br /&gt;
     background-color: rgba(255, 255, 0, .4);&lt;br /&gt;
}&lt;br /&gt;
/* Used to force a border model for a node */&lt;br /&gt;
 .cm-force-border {&lt;br /&gt;
     padding-right: .1px;&lt;br /&gt;
}&lt;br /&gt;
 @media print {&lt;br /&gt;
    /* Hide the cursor when printing */&lt;br /&gt;
     .CodeMirror div.CodeMirror-cursors {&lt;br /&gt;
         visibility: hidden;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
/* See issue #2901 */&lt;br /&gt;
 .cm-tab-wrap-hack:after {&lt;br /&gt;
     content: &#039;&#039;;&lt;br /&gt;
}&lt;br /&gt;
/* Help users use markselection to safely style text background */&lt;br /&gt;
 span.CodeMirror-selectedtext {&lt;br /&gt;
     background: none;&lt;br /&gt;
}&lt;br /&gt;
/* foldgutter */&lt;br /&gt;
 .CodeMirror-foldmarker {&lt;br /&gt;
     color: blue;&lt;br /&gt;
     text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px;&lt;br /&gt;
     font-family: arial;&lt;br /&gt;
     line-height: .3;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter {&lt;br /&gt;
     width: .7em;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded {&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter-open:after {&lt;br /&gt;
     content: &amp;quot;\25BE&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-foldgutter-folded:after {&lt;br /&gt;
     content: &amp;quot;\25B8&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
/* The lint marker gutter */&lt;br /&gt;
 .CodeMirror-lint-markers {&lt;br /&gt;
     width: 16px;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-tooltip {&lt;br /&gt;
     background-color: #ffd;&lt;br /&gt;
     border: 1px solid black;&lt;br /&gt;
     border-radius: 4px 4px 4px 4px;&lt;br /&gt;
     color: black;&lt;br /&gt;
     font-family: monospace;&lt;br /&gt;
     font-size: 10pt;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     padding: 2px 5px;&lt;br /&gt;
     position: fixed;&lt;br /&gt;
     white-space: pre;&lt;br /&gt;
     white-space: pre-wrap;&lt;br /&gt;
     z-index: 100;&lt;br /&gt;
     max-width: 600px;&lt;br /&gt;
     opacity: 0;&lt;br /&gt;
     transition: opacity .4s;&lt;br /&gt;
     -moz-transition: opacity .4s;&lt;br /&gt;
     -webkit-transition: opacity .4s;&lt;br /&gt;
     -o-transition: opacity .4s;&lt;br /&gt;
     -ms-transition: opacity .4s;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {&lt;br /&gt;
     background-position: left bottom;&lt;br /&gt;
     background-repeat: repeat-x;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-mark-error {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-mark-warning {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {&lt;br /&gt;
     background-position: center center;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     display: inline-block;&lt;br /&gt;
     height: 16px;&lt;br /&gt;
     width: 16px;&lt;br /&gt;
     vertical-align: middle;&lt;br /&gt;
     position: relative;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {&lt;br /&gt;
     padding-left: 18px;&lt;br /&gt;
     background-position: top left;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-lint-marker-multiple {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC&amp;quot;);&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
     background-position: right bottom;&lt;br /&gt;
     width: 100%;&lt;br /&gt;
     height: 100%;&lt;br /&gt;
}&lt;br /&gt;
/* MDN-LIKE Theme - Mozilla Ported to CodeMirror by Peter Kroon &amp;lt;plakroon@gmail.com&amp;gt; Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues GitHub: @peterkroon The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation */&lt;br /&gt;
 .cm-s-mdn-like.CodeMirror {&lt;br /&gt;
     color: #999;&lt;br /&gt;
     background-color: #fff;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like div.CodeMirror-selected {&lt;br /&gt;
     background: #cfc;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span::selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span &amp;gt; span::selection {&lt;br /&gt;
     background: #cfc;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span::-moz-selection, .cm-s-mdn-like .CodeMirror-line &amp;gt; span &amp;gt; span::-moz-selection {&lt;br /&gt;
     background: #cfc;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-gutters, .cm-s-neo .CodeMirror-gutters {&lt;br /&gt;
     background: #f8f8f8;&lt;br /&gt;
     border-left: 6px solid rgba(0,83,159,0.65);&lt;br /&gt;
     color: #333;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-linenumber, .cm-s-neo .CodeMirror-linenumber {&lt;br /&gt;
     color: #aaa;&lt;br /&gt;
     padding-left: 8px;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .CodeMirror-cursor {&lt;br /&gt;
     border-left: 2px solid #222;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-keyword {&lt;br /&gt;
     color: #6262FF;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-atom {&lt;br /&gt;
     color: #F90;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-number {&lt;br /&gt;
     color: #ca7841;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-def {&lt;br /&gt;
     color: #8DA6CE;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag {&lt;br /&gt;
     color: #690;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def, .cm-s-mdn-like span.cm-type {&lt;br /&gt;
     color: #07a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-variable {&lt;br /&gt;
     color: #07a;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-property {&lt;br /&gt;
     color: #905;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-qualifier {&lt;br /&gt;
     color: #690;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-operator {&lt;br /&gt;
     color: #cda869;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-comment {&lt;br /&gt;
     color:#777;&lt;br /&gt;
     font-weight:normal;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-string {&lt;br /&gt;
     color:#07a;&lt;br /&gt;
     font-style:italic;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-string-2 {&lt;br /&gt;
     color:#bd6b18;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-meta {&lt;br /&gt;
     color: #000;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-builtin {&lt;br /&gt;
     color: #9B7536;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-tag {&lt;br /&gt;
     color: #997643;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-attribute {&lt;br /&gt;
     color: #d6bb6d;&lt;br /&gt;
}&lt;br /&gt;
/*?*/&lt;br /&gt;
 .cm-s-mdn-like .cm-header {&lt;br /&gt;
     color: #FF6400;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-hr {&lt;br /&gt;
     color: #AEAEAE;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-link {&lt;br /&gt;
     color:#ad9361;&lt;br /&gt;
     font-style:italic;&lt;br /&gt;
     text-decoration:none;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like .cm-error {&lt;br /&gt;
     border-bottom: 1px solid red;&lt;br /&gt;
}&lt;br /&gt;
 div.cm-s-mdn-like .CodeMirror-activeline-background {&lt;br /&gt;
     background: #efefff;&lt;br /&gt;
}&lt;br /&gt;
 div.cm-s-mdn-like span.CodeMirror-matchingbracket {&lt;br /&gt;
     outline:1px solid grey;&lt;br /&gt;
     color: inherit;&lt;br /&gt;
}&lt;br /&gt;
 .cm-s-mdn-like.CodeMirror, .cm-s-neo.CodeMirror {&lt;br /&gt;
     background-image: url(&amp;quot;data:image/png;&lt;br /&gt;
    base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAHvklEQVR42s2b63bcNgyEQZCSHCdt2vd/0tWF7I+Q6XgMXiTtuvU5Pl57ZQKkKHzEAOtF5KeIJBGJ8uvL599FRFREZhFx8DeXv8trn68RuGaC8TRfo3SNp9dlDDHedyLyTUTeRWStXKPZrjtpZxaRw5hPqozRs1N8/enzIiQRWcCgy4MUA0f+XWliDhyL8Lfyvx7ei/Ae3iQFHyw7U/59pQVIMEEPEz0G7XiwdRjzSfC3UTtz9vchIntxvry5iMgfIhJoEflOz2CQr3F5h/HfeFe+GTdLaKcu9L8LTeQb/R/7GgbsfKedyNdoHsN31uRPWrfZ5wsj/NzzRQHuToIdU3ahwnsKPxXCjJITuOsi7XLc7SG/v5GdALs7wf8JjTFiB5+QvTEfRyGOfX3Lrx8wxyQi3sNq46O7QahQiCsRFgqddjBouVEHOKDgXAQHD9gJCr5sMKkEdjwsarG/ww3BMHBU7OBjXnzdyY7SfCxf5/z6ATccrwlKuwC/jhznnPF4CgVzhhVf4xp2EixcBActO75iZ8/fM9zAs2OMzKdslgXWJ9XG8PQoOAMA5fGcsvORgv0doBXyHrCwfLJAOwo71QLNkb8n2Pl6EWiR7OCibtkPaz4Kc/0NNAze2gju3zOwekALDaCFPI5vjPFmgGY5AZqyGEvH1x7QfIb8YtxMnA/b+QQ0aQDAwc6JMFg8CbQZ4qoYEEHbRwNojuK3EHwd7VALSgq+MNDKzfT58T8qdpADrgW0GmgcAS1lhzztJmkAzcPNOQbsWEALBDSlMKUG0Eq4CLAQWvEVQ9WU57gZJwZtgPO3r9oBTQ9WO8TjqXINx8R0EYpiZEUWOF3FxkbJkgU9B2f41YBrIj5ZfsQa0M5kTgiAAqM3ShXLgu8XMqcrQBvJ0CL5pnTsfMB13oB8athpAq2XOQmcGmoACCLydx7nToa23ATaSIY2ichfOdPTGxlasXMLaL0MLZAOwAKIM+y8CmicobGdCcbbK9DzN+yYGVoNNI5iUKTMyYOjPse4A8SM1MmcXgU0toOq1yO/v8FOxlASyc7TgeYaAMBJHcY1CcCwGI/TK4AmDbDyKYBBtFUkRwto8gygiQEaByFgJ00BH2M8JWwQS1nafDXQCidWyOI8AcjDCSjCLk8ngObuAm3JAHAdubAmOaK06V8MNEsKPJOhobSprwQa6gD7DclRQdqcwL4zxqgBrQcabUiBLclRDKAlWp+etPkBaNMA0AKlrHwTdEByZAA4GM+SNluSY6wAzcMNewxmgig5Ks0nkrSpBvSaQHMdKTBAnLojOdYyGpQ254602ZILPdTD1hdlggdIm74jbTp8vDwF5ZYUeLWGJpWsh6XNyXgcYwVoJQTEhhTYkxzZjiU5npU2TaB979TQehlaAVq4kaGpiPwwwLkYUuBbQwocyQTv1tA0+1UFWoJF3iv1oq+qoSk8EQdJmwHkziIF7oOZk14EGitibAdjLYYK78H5vZOhtWpoI0ATGHs0Q8OMb4Ey+2bU2UYztCtA0wFAs7TplGLRVQCcqaFdGSPCeTI1QNIC52iWNzof6Uib7xjEp07mNNoUYmVosVItHrHzRlLgBn9LFyRHaQCtVUMbtTNhoXWiTOO9k/V8BdAc1Oq0ArSQs6/5SU0hckNy9NnXqQY0PGYo5dWJ7nINaN6o958FWin27aBaWRka1r5myvLOAm0j30eBJqCxHLReVclxhxOEN2JfDWjxBtAC7MIH1fVaGdoOp4qJYDgKtKPSFNID2gSnGldrCqkFZ+5UeQXQBIRrSwocbdZYQT/2LwRahBPBXoHrB8nxaGROST62DKUbQOMMzZIC9abkuELfQzQALWTnDNAm8KHWFOJgJ5+SHIvTPcmx1xQyZRhNL5Qci689aXMEaN/uNIWkEwDAvFpOZmgsBaaGnbs1NPa1Jm32gBZAIh1pCtG7TSH4aE0y1uVY4uqoFPisGlpP2rSA5qTecWn5agK6BzSpgAyD+wFaqhnYoSZ1Vwr8CmlTQbrcO3ZaX0NAEyMbYaAlyquFoLKK3SPby9CeVUPThrSJmkCAE0CrKUQadi4DrdSlWhmah0YL9z9vClH59YGbHx1J8VZTyAjQepJjmXwAKTDQI3omc3p1U4gDUf6RfcdYfrUp5ClAi2J3Ba6UOXGo+K+bQrjjssitG2SJzshaLwMtXgRagUNpYYoVkMSBLM+9GGiJZMvduG6DRZ4qc04DMPtQQxOjEtACmhO7K1AbNbQDEggZyJwscFpAGwENhoBeUwh3bWolhe8BTYVKxQEWrSUn/uhcM5KhvUu/+eQu0Lzhi+VrK0PrZZNDQKs9cpYUuFYgMVpD4/NxenJTiMCNqdUEUf1qZWjppLT5qSkkUZbCwkbZMSuVnu80hfSkzRbQeqCZSAh6huR4VtoM2gHAlLf72smuWgE+VV7XpE25Ab2WFDgyhnSuKbs4GuGzCjR+tIoUuMFg3kgcWKLTwRqanJQ2W00hAsenfaApRC42hbCvK1SlE0HtE9BGgneJO+ELamitD1YjjOYnNYVcraGhtKkW0EqVVeDx733I2NH581k1NNxNLG0i0IJ8/NjVaOZ0tYZ2Vtr0Xv7tPV3hkWp9EFkgS/J0vosngTaSoaG06WHi+xObQkaAdlbanP8B2+2l0f90LmUAAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
/* Fullscreen */&lt;br /&gt;
.CodeMirror-fullscreen {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    top: 0; &lt;br /&gt;
    left: 13em; &lt;br /&gt;
    right: 0; &lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    z-index: 9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hints */&lt;br /&gt;
.CodeMirror-hints {&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     z-index: 10;&lt;br /&gt;
     overflow: hidden;&lt;br /&gt;
     list-style: none;&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     padding: 2px;&lt;br /&gt;
     -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
     -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
     box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
     border-radius: 3px;&lt;br /&gt;
     border: 1px solid silver;&lt;br /&gt;
     background: white;&lt;br /&gt;
     font-size: 90%;&lt;br /&gt;
     font-family: monospace;&lt;br /&gt;
     max-height: 20em;&lt;br /&gt;
     overflow-y: auto;&lt;br /&gt;
}&lt;br /&gt;
 .CodeMirror-hint {&lt;br /&gt;
     margin: 0;&lt;br /&gt;
     padding: 0 4px;&lt;br /&gt;
     border-radius: 2px;&lt;br /&gt;
     white-space: pre;&lt;br /&gt;
     color: black;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
 li.CodeMirror-hint-active {&lt;br /&gt;
     background: #08f;&lt;br /&gt;
     color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dialog */&lt;br /&gt;
.CodeMirror-dialog {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 0; right: 0;&lt;br /&gt;
  background: inherit;&lt;br /&gt;
  z-index: 15;&lt;br /&gt;
  padding: .1em .8em;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
  color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog-top {&lt;br /&gt;
  border-bottom: 1px solid #eee;&lt;br /&gt;
  top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog-bottom {&lt;br /&gt;
  border-top: 1px solid #eee;&lt;br /&gt;
  bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog input {&lt;br /&gt;
  border: none;&lt;br /&gt;
  outline: none;&lt;br /&gt;
  background: transparent;&lt;br /&gt;
  width: 20em;&lt;br /&gt;
  color: inherit;&lt;br /&gt;
  font-family: monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-dialog button {&lt;br /&gt;
  font-size: 70%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tern */&lt;br /&gt;
.CodeMirror-Tern-completion {&lt;br /&gt;
  padding-left: 22px;&lt;br /&gt;
  position: relative;&lt;br /&gt;
  line-height: 1.5;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion:before {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  left: 2px;&lt;br /&gt;
  bottom: 2px;&lt;br /&gt;
  border-radius: 50%;&lt;br /&gt;
  font-size: 12px;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  height: 15px;&lt;br /&gt;
  width: 15px;&lt;br /&gt;
  line-height: 16px;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  color: white;&lt;br /&gt;
  -moz-box-sizing: border-box;&lt;br /&gt;
  box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-unknown:before {&lt;br /&gt;
  content: &amp;quot;?&amp;quot;;&lt;br /&gt;
  background: #4bb;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-object:before {&lt;br /&gt;
  content: &amp;quot;O&amp;quot;;&lt;br /&gt;
  background: #77c;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-fn:before {&lt;br /&gt;
  content: &amp;quot;F&amp;quot;;&lt;br /&gt;
  background: #7c7;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-array:before {&lt;br /&gt;
  content: &amp;quot;A&amp;quot;;&lt;br /&gt;
  background: #c66;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-number:before {&lt;br /&gt;
  content: &amp;quot;1&amp;quot;;&lt;br /&gt;
  background: #999;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-string:before {&lt;br /&gt;
  content: &amp;quot;S&amp;quot;;&lt;br /&gt;
  background: #999;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-Tern-completion-bool:before {&lt;br /&gt;
  content: &amp;quot;B&amp;quot;;&lt;br /&gt;
  background: #999;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-completion-guess {&lt;br /&gt;
  color: #999;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-tooltip {&lt;br /&gt;
  border: 1px solid silver;&lt;br /&gt;
  border-radius: 3px;&lt;br /&gt;
  color: #444;&lt;br /&gt;
  padding: 2px 5px;&lt;br /&gt;
  font-size: 90%;&lt;br /&gt;
  font-family: monospace;&lt;br /&gt;
  background-color: white;&lt;br /&gt;
  white-space: pre-wrap;&lt;br /&gt;
&lt;br /&gt;
  max-width: 40em;&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  z-index: 10;&lt;br /&gt;
  -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
  -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
  box-shadow: 2px 3px 5px rgba(0,0,0,.2);&lt;br /&gt;
&lt;br /&gt;
  transition: opacity 1s;&lt;br /&gt;
  -moz-transition: opacity 1s;&lt;br /&gt;
  -webkit-transition: opacity 1s;&lt;br /&gt;
  -o-transition: opacity 1s;&lt;br /&gt;
  -ms-transition: opacity 1s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-hint-doc {&lt;br /&gt;
  max-width: 25em;&lt;br /&gt;
  margin-top: -3px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.CodeMirror-Tern-fname { color: black; }&lt;br /&gt;
.CodeMirror-Tern-farg { color: #70a; }&lt;br /&gt;
.CodeMirror-Tern-farg-current { text-decoration: underline; }&lt;br /&gt;
.CodeMirror-Tern-type { color: #07c; }&lt;br /&gt;
.CodeMirror-Tern-fhint-guess { opacity: .7; }&lt;br /&gt;
&lt;br /&gt;
/* neo theme for codemirror */&lt;br /&gt;
&lt;br /&gt;
/* Color scheme */&lt;br /&gt;
&lt;br /&gt;
.cm-s-neo.CodeMirror {&lt;br /&gt;
  background-color:#ffffff;&lt;br /&gt;
  color:#2e383c;&lt;br /&gt;
  line-height:1.4375;&lt;br /&gt;
}&lt;br /&gt;
.cm-s-neo .cm-comment { color:#75787b; }&lt;br /&gt;
.cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; }&lt;br /&gt;
.cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; }&lt;br /&gt;
.cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; }&lt;br /&gt;
.cm-s-neo .cm-string { color:#b35e14; }&lt;br /&gt;
.cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Editor styling */&lt;br /&gt;
&lt;br /&gt;
.cm-s-neo pre {&lt;br /&gt;
  padding:0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; }&lt;br /&gt;
.cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; }&lt;br /&gt;
&lt;br /&gt;
/*---------------------------------------------------------------*/&lt;br /&gt;
/* Universal */&lt;br /&gt;
 button{&lt;br /&gt;
     float: left;&lt;br /&gt;
     line-height: 1.3;&lt;br /&gt;
     padding: 5px 8px;&lt;br /&gt;
}&lt;br /&gt;
 button.run {&lt;br /&gt;
     background-image: linear-gradient(to bottom, #337AB7 0px, #265A88 100%);&lt;br /&gt;
     background-color: #306AA0;&lt;br /&gt;
     border-radius: 6px;&lt;br /&gt;
     border-color: #245580;&lt;br /&gt;
     border-width: 1px;&lt;br /&gt;
     color: #FFF;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     font-size: 18px;&lt;br /&gt;
}&lt;br /&gt;
 button.other {&lt;br /&gt;
     border-radius: 0.5ex;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     display: inline;&lt;br /&gt;
     border: 1px solid;&lt;br /&gt;
     float: right;&lt;br /&gt;
     font-size: 14px;&lt;br /&gt;
     margin-left: 0.25em;&lt;br /&gt;
}&lt;br /&gt;
 code {&lt;br /&gt;
     background-color: #e6e6e6;&lt;br /&gt;
}&lt;br /&gt;
 div.guidelist{&lt;br /&gt;
     float: right;&lt;br /&gt;
     width: 32ex;&lt;br /&gt;
     border-left: 1px solid;&lt;br /&gt;
     border-right: 1px solid;&lt;br /&gt;
     background-color: #F0F0FF;&lt;br /&gt;
     border-collapse: collapse;&lt;br /&gt;
     border-bottom: 1px solid;&lt;br /&gt;
     margin-bottom: 2%;&lt;br /&gt;
     padding-left: 0px;&lt;br /&gt;
}&lt;br /&gt;
 div.guidelist div.fc {&lt;br /&gt;
     padding: 1em;&lt;br /&gt;
     background-color: #000;&lt;br /&gt;
     color: #FFF;&lt;br /&gt;
}&lt;br /&gt;
 div.guidelist div {&lt;br /&gt;
     padding: 0ex 1em;&lt;br /&gt;
     border-bottom: 1px solid;&lt;br /&gt;
}&lt;br /&gt;
div.res.waiting {&lt;br /&gt;
     background-image: url(/mw/design/spinner.gif) !important;&lt;br /&gt;
     background-repeat: no-repeat !important;;&lt;br /&gt;
     background-position: center center !important;;&lt;br /&gt;
     height: 180px;&lt;br /&gt;
}&lt;br /&gt;
 h1#firstHeading{&lt;br /&gt;
     overflow-x: hidden;&lt;br /&gt;
}&lt;br /&gt;
 pre{&lt;br /&gt;
     border-color: #949494;&lt;br /&gt;
     white-space: pre-wrap;&lt;br /&gt;
    /* CSS 3 */&lt;br /&gt;
     white-space: -moz-pre-wrap;&lt;br /&gt;
    /* Mozilla, since 1999 */&lt;br /&gt;
     white-space: -pre-wrap;&lt;br /&gt;
    /* Opera 4-6 */&lt;br /&gt;
     white-space: -o-pre-wrap;&lt;br /&gt;
    /* Opera 7 */&lt;br /&gt;
     word-wrap: break-word;&lt;br /&gt;
    /* Internet Explorer 5.5+ */&lt;br /&gt;
}&lt;br /&gt;
 span.id{&lt;br /&gt;
     font-size:300%;&lt;br /&gt;
     padding-right:1ex &lt;br /&gt;
}&lt;br /&gt;
 textarea{&lt;br /&gt;
     background: #F9F9F9;&lt;br /&gt;
     font-family: &amp;quot;Lucida Console&amp;quot;, &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
     font-size: 16px;&lt;br /&gt;
     margin: 1em 0;&lt;br /&gt;
     min-height: 150px;&lt;br /&gt;
     resize: vertical;&lt;br /&gt;
}&lt;br /&gt;
 .strong{&lt;br /&gt;
     font-weight:bold;&lt;br /&gt;
}&lt;br /&gt;
 .tease {&lt;br /&gt;
     color: #1D365D;&lt;br /&gt;
     font-style: italic;&lt;br /&gt;
     cursor: pointer;&lt;br /&gt;
     padding: 0.2ex;&lt;br /&gt;
}&lt;br /&gt;
 .q{&lt;br /&gt;
     border-top: thin solid #ee8301;&lt;br /&gt;
     margin-bottom: 9em;&lt;br /&gt;
     width: 100%;&lt;br /&gt;
}&lt;br /&gt;
 .q .ans, .q .def, .q .res{&lt;br /&gt;
     font-weight: normal;&lt;br /&gt;
     display: none;&lt;br /&gt;
}&lt;br /&gt;
 .q .res{&lt;br /&gt;
     background: rgba(246, 246, 246, 1);&lt;br /&gt;
     border: solid thin black;&lt;br /&gt;
     border-radius: 0.5ex;&lt;br /&gt;
     border-style: inset;&lt;br /&gt;
     border-width: 1px;&lt;br /&gt;
     box-shadow: 1px 1px 3px #3b434e;&lt;br /&gt;
     color: #3b434e;&lt;br /&gt;
     clear:both;&lt;br /&gt;
     height: auto;&lt;br /&gt;
     margin-top: 1ex;&lt;br /&gt;
     max-width: 100%;&lt;br /&gt;
     overflow: auto;&lt;br /&gt;
     padding: 1em;&lt;br /&gt;
     resize: both;&lt;br /&gt;
}&lt;br /&gt;
 .setup{&lt;br /&gt;
     display: none;&lt;br /&gt;
}&lt;br /&gt;
 .tease{&lt;br /&gt;
     color:#1d365d;&lt;br /&gt;
     font-style:italic;&lt;br /&gt;
     cursor:pointer;&lt;br /&gt;
     padding: 0.2ex;&lt;br /&gt;
}&lt;br /&gt;
 @media all and (max-width: 768px){&lt;br /&gt;
     div.vectorTabs{&lt;br /&gt;
         padding: 0;&lt;br /&gt;
    }&lt;br /&gt;
     .guidelist{&lt;br /&gt;
         display: none;&lt;br /&gt;
    }&lt;br /&gt;
     .mw-body{&lt;br /&gt;
         border-left: 0;&lt;br /&gt;
         margin-left: 0;&lt;br /&gt;
    }&lt;br /&gt;
     div#footer{&lt;br /&gt;
         margin-left: 0;&lt;br /&gt;
    }&lt;br /&gt;
     #mw-panel{&lt;br /&gt;
         display:none;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 .qcorrect{&lt;br /&gt;
     background-image: url(//sqlzoo.net/design/done9.png);&lt;br /&gt;
}&lt;br /&gt;
 .qincorrect {&lt;br /&gt;
     background-image:url(//sqlzoo.net/design/undone9.png);&lt;br /&gt;
}&lt;br /&gt;
 .qcorrect, .qincorrect {&lt;br /&gt;
     width: 3em;&lt;br /&gt;
     height: 3em;&lt;br /&gt;
     position: absolute;&lt;br /&gt;
     margin: 0em 0 0 5em;&lt;br /&gt;
     background-size: 3em;&lt;br /&gt;
     background-repeat: no-repeat;&lt;br /&gt;
     background-position: center;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=NoSQLZoo&amp;diff=1456</id>
		<title>NoSQLZoo</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=NoSQLZoo&amp;diff=1456"/>
		<updated>2025-03-29T18:37:59Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: Created page with &amp;quot;Learn NoSQL using MongoDB. &amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;   What is the capital of France?   &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne({name: &amp;quot;France&amp;quot;}).capital;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt; &amp;lt;/div&amp;gt; {{TopTenTips}} &amp;lt;div style=&amp;quot;min-height:25em&amp;quot;&amp;gt; ==Tutorials: Learn NoSQL in stages==  ===MongoDB=== ; 1 FIND Tutorial:Using Find. ; 2 AGGREGATE Tutorial:In which we query the world collection and make use of aggregate functions. (extra: AGGRE...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn NoSQL using MongoDB.&lt;br /&gt;
&amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  What is the capital of France?&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne({name: &amp;quot;France&amp;quot;}).capital;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{TopTenTips}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;min-height:25em&amp;quot;&amp;gt;&lt;br /&gt;
==Tutorials: Learn NoSQL in stages==&lt;br /&gt;
&lt;br /&gt;
===MongoDB===&lt;br /&gt;
; 1 [[FIND Tutorial|FIND Tutorial]]:Using Find.&lt;br /&gt;
; 2 [[AGGREGATE Tutorial|AGGREGATE Tutorial]]:In which we query the world collection and make use of aggregate functions. (extra: [[AGGREGATE Movies Tutorial|AGGREGATE Movies Tutorial]])&lt;br /&gt;
; 3 [[MAPREDUCE Tutorial]]:Using MapReduce.&lt;br /&gt;
; 4 [[MAPREDUCE Elite]]:MapReduce questions using the Elite Dangerous dataset.&lt;br /&gt;
===Neo4j===&lt;br /&gt;
; 1 [[Space_Race/MATCH_Tutorial|MATCH Tutorial]]: Using MATCH&lt;br /&gt;
; 2 [[Space_Race/Relationships_Tutorial|Relationships Tutorial]]: Understanding Relationships&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reference: How to...==&lt;br /&gt;
; [[AGGREGATE examples | AGGREGATE Examples]]&lt;br /&gt;
; [[Find|FIND]]&lt;br /&gt;
; [[FIND Examples]]&lt;br /&gt;
; [[JavaScript: Fundamentals]]&lt;br /&gt;
; [[JavaScript: Computed Properties]]&lt;br /&gt;
; [[MapReduce | MAPREDUCE]]&lt;br /&gt;
; [[Elite Document Structure|NOSQLZOO: &#039;elite&#039; dataset schema]]&lt;br /&gt;
; [[RegEx Pattern Matching]]&lt;br /&gt;
&lt;br /&gt;
==MongoDB resources==&lt;br /&gt;
{{Acknowledgements}}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=Main_Page&amp;diff=1455</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=Main_Page&amp;diff=1455"/>
		<updated>2025-03-29T18:35:16Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: Andr3w moved page Main Page to NoSQL Zoo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[NoSQL Zoo]]&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=NoSQL_Zoo&amp;diff=1454</id>
		<title>NoSQL Zoo</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=NoSQL_Zoo&amp;diff=1454"/>
		<updated>2025-03-29T18:35:16Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: Andr3w moved page Main Page to NoSQL Zoo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn NoSQL using MongoDB.&lt;br /&gt;
&amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  What is the capital of France?&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne({name: &amp;quot;France&amp;quot;}).capital;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{TopTenTips}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;min-height:25em&amp;quot;&amp;gt;&lt;br /&gt;
==Tutorials: Learn NoSQL in stages==&lt;br /&gt;
&lt;br /&gt;
===MongoDB===&lt;br /&gt;
; 1 [[FIND Tutorial|FIND Tutorial]]:Using Find.&lt;br /&gt;
; 2 [[AGGREGATE Tutorial|AGGREGATE Tutorial]]:In which we query the world collection and make use of aggregate functions. (extra: [[AGGREGATE Movies Tutorial|AGGREGATE Movies Tutorial]])&lt;br /&gt;
; 3 [[MAPREDUCE Tutorial]]:Using MapReduce.&lt;br /&gt;
; 4 [[MAPREDUCE Elite]]:MapReduce questions using the Elite Dangerous dataset.&lt;br /&gt;
===Neo4j===&lt;br /&gt;
; 1 [[Space_Race/MATCH_Tutorial|MATCH Tutorial]]: Using MATCH&lt;br /&gt;
; 2 [[Space_Race/Relationships_Tutorial|Relationships Tutorial]]: Understanding Relationships&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reference: How to...==&lt;br /&gt;
; [[AGGREGATE examples | AGGREGATE Examples]]&lt;br /&gt;
; [[Find|FIND]]&lt;br /&gt;
; [[FIND Examples]]&lt;br /&gt;
; [[JavaScript: Fundamentals]]&lt;br /&gt;
; [[JavaScript: Computed Properties]]&lt;br /&gt;
; [[MapReduce | MAPREDUCE]]&lt;br /&gt;
; [[Elite Document Structure|NOSQLZOO: &#039;elite&#039; dataset schema]]&lt;br /&gt;
; [[RegEx Pattern Matching]]&lt;br /&gt;
&lt;br /&gt;
==MongoDB resources==&lt;br /&gt;
;Manuals: [http://docs.mongodb.org/manual/ MongoDB Documentation] [https://github.com/mongodb/docs MongoDB Documentation GitHub]&amp;lt;br/&amp;gt;[https://docs.python.org/3/ Python 3 Documentation] [http://api.mongodb.org/python/current/ PyMongo API Documentation]&amp;lt;br/&amp;gt; Karl Seguin&#039;s [http://openmymind.net/mongodb.pdf The Little MongoDB Book]&lt;br /&gt;
&lt;br /&gt;
{{Acknowledgements}}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=NoSQL_Zoo&amp;diff=1453</id>
		<title>NoSQL Zoo</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=NoSQL_Zoo&amp;diff=1453"/>
		<updated>2022-04-01T20:30:12Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Tutorials: Learn NoSQL in stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn NoSQL using MongoDB.&lt;br /&gt;
&amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  What is the capital of France?&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne({name: &amp;quot;France&amp;quot;}).capital;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{TopTenTips}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;min-height:25em&amp;quot;&amp;gt;&lt;br /&gt;
==Tutorials: Learn NoSQL in stages==&lt;br /&gt;
&lt;br /&gt;
===MongoDB===&lt;br /&gt;
; 1 [[FIND Tutorial|FIND Tutorial]]:Using Find.&lt;br /&gt;
; 2 [[AGGREGATE Tutorial|AGGREGATE Tutorial]]:In which we query the world collection and make use of aggregate functions. (extra: [[AGGREGATE Movies Tutorial|AGGREGATE Movies Tutorial]])&lt;br /&gt;
; 3 [[MAPREDUCE Tutorial]]:Using MapReduce.&lt;br /&gt;
; 4 [[MAPREDUCE Elite]]:MapReduce questions using the Elite Dangerous dataset.&lt;br /&gt;
===Neo4j===&lt;br /&gt;
; 1 [[Space_Race/MATCH_Tutorial|MATCH Tutorial]]: Using MATCH&lt;br /&gt;
; 2 [[Space_Race/Relationships_Tutorial|Relationships Tutorial]]: Understanding Relationships&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reference: How to...==&lt;br /&gt;
; [[AGGREGATE examples | AGGREGATE Examples]]&lt;br /&gt;
; [[Find|FIND]]&lt;br /&gt;
; [[FIND Examples]]&lt;br /&gt;
; [[JavaScript: Fundamentals]]&lt;br /&gt;
; [[JavaScript: Computed Properties]]&lt;br /&gt;
; [[MapReduce | MAPREDUCE]]&lt;br /&gt;
; [[Elite Document Structure|NOSQLZOO: &#039;elite&#039; dataset schema]]&lt;br /&gt;
; [[RegEx Pattern Matching]]&lt;br /&gt;
&lt;br /&gt;
==MongoDB resources==&lt;br /&gt;
;Manuals: [http://docs.mongodb.org/manual/ MongoDB Documentation] [https://github.com/mongodb/docs MongoDB Documentation GitHub]&amp;lt;br/&amp;gt;[https://docs.python.org/3/ Python 3 Documentation] [http://api.mongodb.org/python/current/ PyMongo API Documentation]&amp;lt;br/&amp;gt; Karl Seguin&#039;s [http://openmymind.net/mongodb.pdf The Little MongoDB Book]&lt;br /&gt;
&lt;br /&gt;
{{Acknowledgements}}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1452</id>
		<title>AGGREGATE examples</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1452"/>
		<updated>2022-04-01T20:22:13Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* $limit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==aggregate==&lt;br /&gt;
The aggregate function takes a list of operations - this is the pipeline.&lt;br /&gt;
&lt;br /&gt;
The data passes through each stage of the pipeline in turn.&lt;br /&gt;
&lt;br /&gt;
Pipeline stages can include:&lt;br /&gt;
* &#039;&#039;&#039;$group&#039;&#039;&#039; This is the aggregate special sauce; you specify the _id value, the output from this stage includes one entry for each distinct _id value. In SQL you would use a GROUP BY clause&lt;br /&gt;
* &#039;&#039;&#039;$match&#039;&#039;&#039; - this acts as a filter, some data items pass through this stage, some do not. Similar to the WHERE clause in SQL&lt;br /&gt;
* &#039;&#039;&#039;$project&#039;&#039;&#039; - this can be used to transform each element. Rather like the values on the SELECT line of an SQL query&lt;br /&gt;
* &#039;&#039;&#039;$limit&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;$sort&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;$skip&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$group&#039;&#039;&#039; allows you to collect group items that share common features&lt;br /&gt;
* _id - this determines the values to be grouped&lt;br /&gt;
* $continent and $population refers to keys &#039;continent&#039; and &#039;population&#039; available in each item&lt;br /&gt;
* $sum is an aggregating function, it takes many values in and returns a single value. Other examples of aggregating functions are $min $max, $avg&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the continents&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate(&lt;br /&gt;
    {$group: {_id: &amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$match==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$match&#039;&#039;&#039; performs queries in a similar way to &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show all the details for France&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: &amp;quot;France&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:&amp;quot;France&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$limit==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&#039;&#039;&#039;$limit&#039;&#039;&#039; sets the amount of documents to be handed to the next stage in the pipeline.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Return the first two document&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$limit: 2}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$limit&amp;quot;:2}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$project==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$project&#039;&#039;&#039; selects what fields to display.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can also has the ability to create new fields and to compare fields against each other without using &#039;&#039;&#039;$where&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name and population density of all Asian countries. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
Note that &amp;quot;density&amp;quot; is a new field made from the result of dividing two existing fields, and that &#039;&#039;&#039;$divide&#039;&#039;&#039; is an aggregate function.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Dealing with division by 0&amp;quot;&amp;gt;&lt;br /&gt;
To avoid diving by 0 insert a &#039;&#039;&#039;$match&#039;&#039;&#039; to remove any countries with no area (Vatican City), then pipe these results through to &#039;&#039;&#039;$project&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no need to check if values are &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;null&amp;lt;/syntaxhighlight&amp;gt;, MongoDB will ignore these documents.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==aggregate composition==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can have several pipeline stages, the data flows through each one in turn.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of Asian countries with a density that&#039;s over 500 people per km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
   {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
   {$project: {&lt;br /&gt;
       _id: 0,&lt;br /&gt;
       name: 1,&lt;br /&gt;
       density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
   }},&lt;br /&gt;
   {$match: {density: {$gt: 500}}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}},{&amp;quot;$match&amp;quot;:{&amp;quot;density&amp;quot;:{&amp;quot;$gt&amp;quot;:500}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$sort==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$sort&#039;&#039;&#039; allows ordering of the results set, where 1 is ascending and -1 is descending.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that not including &#039;&#039;&#039;$match&#039;&#039;&#039; is the same as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;{&amp;quot;$match&amp;quot;:{}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of all countries in descending order.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {&amp;quot;$project&amp;quot;:{&lt;br /&gt;
        &amp;quot;_id&amp;quot;:0,&lt;br /&gt;
        &amp;quot;name&amp;quot;:1,&lt;br /&gt;
    }},&lt;br /&gt;
    {&amp;quot;$sort&amp;quot;:{&lt;br /&gt;
        &amp;quot;name&amp;quot;:-1&lt;br /&gt;
    }}  &lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,}},{&amp;quot;$sort&amp;quot;:{&amp;quot;name&amp;quot;:-1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grouping==&lt;br /&gt;
Grouping provides accumulator operations such as &#039;&#039;&#039;$sum&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
All groups must have an &#039;&#039;&#039;_id&#039;&#039;&#039;. To see why this is useful imagine the following:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far you&#039;ve been using the &#039;&#039;&#039;world&#039;&#039;&#039; collection&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As every country has a continent, it would make sense to have countries as a nested document inside continents: e.g:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[    &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Africa&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;,    ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Angola&amp;quot;,      &amp;quot;capital&amp;quot;: &amp;quot;Luanda&amp;quot;,     ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Benin&amp;quot;,       &amp;quot;capital&amp;quot;: &amp;quot;Porto-Novo&amp;quot;, ...}.&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Asia&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,  ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Azerbaijan&amp;quot;,  &amp;quot;capital&amp;quot;: &amp;quot;Baku&amp;quot;,   ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Bahrain&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Manama&amp;quot;, ...},&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;world&#039;&#039;&#039; collection isn&#039;t like this however. It uses the following structure, which has a redundancy where &#039;&#039;&#039;continent&#039;&#039;&#039; is repeated for each country.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[ &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,   &amp;quot;continent&amp;quot;: &amp;quot;Asia&amp;quot;,   ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Albania&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Tirana&amp;quot;,  &amp;quot;continent&amp;quot;: &amp;quot;Europe&amp;quot;,  ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;, &amp;quot;contiennt&amp;quot;: &amp;quot;Africa&amp;quot;, ...},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code to group by continent is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
If instead the question was to group by country the code would be &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
To operate over the whole document (which would have the same effect as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;) &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;null&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: None&amp;lt;/syntaxhighlight&amp;gt; can be used.&lt;br /&gt;
==group operators==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;$max&#039;&#039;&#039; and &#039;&#039;&#039;$min&#039;&#039;&#039; can be used to get the largest and smallest values in a group.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Get the smallest and largest GDPs of each continent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &#039;$continent&#039;,&lt;br /&gt;
        min: {$min: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        max: {$max: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        min: 1,&lt;br /&gt;
        max: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&#039;_id&#039;:&#039;$continent&#039;,&#039;min&#039;:{&amp;quot;$min&amp;quot;:&amp;quot;$gdp&amp;quot;},&#039;max&#039;:{&amp;quot;$max&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;min&amp;quot;:1,&amp;quot;max&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Some other useful aggregate functions to know are &#039;&#039;&#039;$sum&#039;&#039;&#039; and average: &#039;&#039;&#039;$avg&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
The example below  combines previous example material.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Order the continents in descending order by total GDP, Include the average GDP for each country.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {}},&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id:&amp;quot;$continent&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: {&amp;quot;$sum&amp;quot;: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: {&amp;quot;$avg&amp;quot;: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;:-1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        &amp;quot;Area&amp;quot;: &amp;quot;$_id&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: 1,&lt;br /&gt;
        _id: 0&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;Total GDP&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$gdp&amp;quot;},&amp;quot;Average GDP&amp;quot;:{&amp;quot;$avg&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;Total GDP&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;Area&amp;quot;:&amp;quot;$_id&amp;quot;,&amp;quot;Total GDP&amp;quot;:1,&amp;quot;Average GDP&amp;quot;:1,&amp;quot;_id&amp;quot;:0}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Using Conditions&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$cond&#039;&#039;&#039; is similar to a &#039;&#039;&#039;CASE&#039;&#039;&#039; statement in other languages.&amp;lt;br/&amp;gt;&lt;br /&gt;
It has the form &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;$cond&amp;quot;: [{&amp;lt;comparison&amp;gt;: [&amp;lt;field or value&amp;gt;, &amp;lt;field or value&amp;gt;]}, &amp;lt;true case&amp;gt;, &amp;lt;false case&amp;gt;]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: {&lt;br /&gt;
            $cond: [{&amp;quot;$eq&amp;quot;: [&amp;quot;$continent&amp;quot;, &amp;quot;Eurasia&amp;quot;]}, &amp;quot;Europe&amp;quot;, &amp;quot;$continent&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1451</id>
		<title>AGGREGATE examples</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1451"/>
		<updated>2022-04-01T20:17:02Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* $project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==aggregate==&lt;br /&gt;
The aggregate function takes a list of operations - this is the pipeline.&lt;br /&gt;
&lt;br /&gt;
The data passes through each stage of the pipeline in turn.&lt;br /&gt;
&lt;br /&gt;
Pipeline stages can include:&lt;br /&gt;
* &#039;&#039;&#039;$group&#039;&#039;&#039; This is the aggregate special sauce; you specify the _id value, the output from this stage includes one entry for each distinct _id value. In SQL you would use a GROUP BY clause&lt;br /&gt;
* &#039;&#039;&#039;$match&#039;&#039;&#039; - this acts as a filter, some data items pass through this stage, some do not. Similar to the WHERE clause in SQL&lt;br /&gt;
* &#039;&#039;&#039;$project&#039;&#039;&#039; - this can be used to transform each element. Rather like the values on the SELECT line of an SQL query&lt;br /&gt;
* &#039;&#039;&#039;$limit&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;$sort&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;$skip&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$group&#039;&#039;&#039; allows you to collect group items that share common features&lt;br /&gt;
* _id - this determines the values to be grouped&lt;br /&gt;
* $continent and $population refers to keys &#039;continent&#039; and &#039;population&#039; available in each item&lt;br /&gt;
* $sum is an aggregating function, it takes many values in and returns a single value. Other examples of aggregating functions are $min $max, $avg&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the continents&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate(&lt;br /&gt;
    {$group: {_id: &amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$match==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$match&#039;&#039;&#039; performs queries in a similar way to &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show all the details for France&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: &amp;quot;France&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:&amp;quot;France&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$limit==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&#039;&#039;&#039;$limit&#039;&#039;&#039; sets the amount of documents to be handed to the next stage in the pipeline.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Return the first two document&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$limit: 2}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$limit&amp;quot;:1}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$project==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$project&#039;&#039;&#039; selects what fields to display.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can also has the ability to create new fields and to compare fields against each other without using &#039;&#039;&#039;$where&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name and population density of all Asian countries. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
Note that &amp;quot;density&amp;quot; is a new field made from the result of dividing two existing fields, and that &#039;&#039;&#039;$divide&#039;&#039;&#039; is an aggregate function.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Dealing with division by 0&amp;quot;&amp;gt;&lt;br /&gt;
To avoid diving by 0 insert a &#039;&#039;&#039;$match&#039;&#039;&#039; to remove any countries with no area (Vatican City), then pipe these results through to &#039;&#039;&#039;$project&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no need to check if values are &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;null&amp;lt;/syntaxhighlight&amp;gt;, MongoDB will ignore these documents.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==aggregate composition==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can have several pipeline stages, the data flows through each one in turn.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of Asian countries with a density that&#039;s over 500 people per km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
   {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
   {$project: {&lt;br /&gt;
       _id: 0,&lt;br /&gt;
       name: 1,&lt;br /&gt;
       density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
   }},&lt;br /&gt;
   {$match: {density: {$gt: 500}}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}},{&amp;quot;$match&amp;quot;:{&amp;quot;density&amp;quot;:{&amp;quot;$gt&amp;quot;:500}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$sort==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$sort&#039;&#039;&#039; allows ordering of the results set, where 1 is ascending and -1 is descending.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that not including &#039;&#039;&#039;$match&#039;&#039;&#039; is the same as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;{&amp;quot;$match&amp;quot;:{}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of all countries in descending order.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {&amp;quot;$project&amp;quot;:{&lt;br /&gt;
        &amp;quot;_id&amp;quot;:0,&lt;br /&gt;
        &amp;quot;name&amp;quot;:1,&lt;br /&gt;
    }},&lt;br /&gt;
    {&amp;quot;$sort&amp;quot;:{&lt;br /&gt;
        &amp;quot;name&amp;quot;:-1&lt;br /&gt;
    }}  &lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,}},{&amp;quot;$sort&amp;quot;:{&amp;quot;name&amp;quot;:-1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grouping==&lt;br /&gt;
Grouping provides accumulator operations such as &#039;&#039;&#039;$sum&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
All groups must have an &#039;&#039;&#039;_id&#039;&#039;&#039;. To see why this is useful imagine the following:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far you&#039;ve been using the &#039;&#039;&#039;world&#039;&#039;&#039; collection&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As every country has a continent, it would make sense to have countries as a nested document inside continents: e.g:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[    &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Africa&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;,    ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Angola&amp;quot;,      &amp;quot;capital&amp;quot;: &amp;quot;Luanda&amp;quot;,     ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Benin&amp;quot;,       &amp;quot;capital&amp;quot;: &amp;quot;Porto-Novo&amp;quot;, ...}.&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Asia&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,  ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Azerbaijan&amp;quot;,  &amp;quot;capital&amp;quot;: &amp;quot;Baku&amp;quot;,   ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Bahrain&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Manama&amp;quot;, ...},&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;world&#039;&#039;&#039; collection isn&#039;t like this however. It uses the following structure, which has a redundancy where &#039;&#039;&#039;continent&#039;&#039;&#039; is repeated for each country.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[ &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,   &amp;quot;continent&amp;quot;: &amp;quot;Asia&amp;quot;,   ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Albania&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Tirana&amp;quot;,  &amp;quot;continent&amp;quot;: &amp;quot;Europe&amp;quot;,  ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;, &amp;quot;contiennt&amp;quot;: &amp;quot;Africa&amp;quot;, ...},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code to group by continent is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
If instead the question was to group by country the code would be &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
To operate over the whole document (which would have the same effect as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;) &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;null&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: None&amp;lt;/syntaxhighlight&amp;gt; can be used.&lt;br /&gt;
==group operators==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;$max&#039;&#039;&#039; and &#039;&#039;&#039;$min&#039;&#039;&#039; can be used to get the largest and smallest values in a group.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Get the smallest and largest GDPs of each continent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &#039;$continent&#039;,&lt;br /&gt;
        min: {$min: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        max: {$max: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        min: 1,&lt;br /&gt;
        max: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&#039;_id&#039;:&#039;$continent&#039;,&#039;min&#039;:{&amp;quot;$min&amp;quot;:&amp;quot;$gdp&amp;quot;},&#039;max&#039;:{&amp;quot;$max&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;min&amp;quot;:1,&amp;quot;max&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Some other useful aggregate functions to know are &#039;&#039;&#039;$sum&#039;&#039;&#039; and average: &#039;&#039;&#039;$avg&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
The example below  combines previous example material.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Order the continents in descending order by total GDP, Include the average GDP for each country.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {}},&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id:&amp;quot;$continent&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: {&amp;quot;$sum&amp;quot;: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: {&amp;quot;$avg&amp;quot;: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;:-1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        &amp;quot;Area&amp;quot;: &amp;quot;$_id&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: 1,&lt;br /&gt;
        _id: 0&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;Total GDP&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$gdp&amp;quot;},&amp;quot;Average GDP&amp;quot;:{&amp;quot;$avg&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;Total GDP&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;Area&amp;quot;:&amp;quot;$_id&amp;quot;,&amp;quot;Total GDP&amp;quot;:1,&amp;quot;Average GDP&amp;quot;:1,&amp;quot;_id&amp;quot;:0}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Using Conditions&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$cond&#039;&#039;&#039; is similar to a &#039;&#039;&#039;CASE&#039;&#039;&#039; statement in other languages.&amp;lt;br/&amp;gt;&lt;br /&gt;
It has the form &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;$cond&amp;quot;: [{&amp;lt;comparison&amp;gt;: [&amp;lt;field or value&amp;gt;, &amp;lt;field or value&amp;gt;]}, &amp;lt;true case&amp;gt;, &amp;lt;false case&amp;gt;]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: {&lt;br /&gt;
            $cond: [{&amp;quot;$eq&amp;quot;: [&amp;quot;$continent&amp;quot;, &amp;quot;Eurasia&amp;quot;]}, &amp;quot;Europe&amp;quot;, &amp;quot;$continent&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1450</id>
		<title>AGGREGATE examples</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1450"/>
		<updated>2022-04-01T20:15:18Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* $group */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==aggregate==&lt;br /&gt;
The aggregate function takes a list of operations - this is the pipeline.&lt;br /&gt;
&lt;br /&gt;
The data passes through each stage of the pipeline in turn.&lt;br /&gt;
&lt;br /&gt;
Pipeline stages can include:&lt;br /&gt;
* &#039;&#039;&#039;$group&#039;&#039;&#039; This is the aggregate special sauce; you specify the _id value, the output from this stage includes one entry for each distinct _id value. In SQL you would use a GROUP BY clause&lt;br /&gt;
* &#039;&#039;&#039;$match&#039;&#039;&#039; - this acts as a filter, some data items pass through this stage, some do not. Similar to the WHERE clause in SQL&lt;br /&gt;
* &#039;&#039;&#039;$project&#039;&#039;&#039; - this can be used to transform each element. Rather like the values on the SELECT line of an SQL query&lt;br /&gt;
* &#039;&#039;&#039;$limit&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;$sort&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;$skip&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$group&#039;&#039;&#039; allows you to collect group items that share common features&lt;br /&gt;
* _id - this determines the values to be grouped&lt;br /&gt;
* $continent and $population refers to keys &#039;continent&#039; and &#039;population&#039; available in each item&lt;br /&gt;
* $sum is an aggregating function, it takes many values in and returns a single value. Other examples of aggregating functions are $min $max, $avg&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the continents&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate(&lt;br /&gt;
    {$group: {_id: &amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$match==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$match&#039;&#039;&#039; performs queries in a similar way to &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show all the details for France&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: &amp;quot;France&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:&amp;quot;France&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$limit==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&#039;&#039;&#039;$limit&#039;&#039;&#039; sets the amount of documents to be handed to the next stage in the pipeline.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Return the first two document&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$limit: 2}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$limit&amp;quot;:1}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==$project==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$project&#039;&#039;&#039; selects what fields to display.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can also has the ability to create new fields and to compare fields against each other without using &#039;&#039;&#039;$where&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name and population density of all Asian countries. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
Note that &amp;quot;density&amp;quot; is a new field made from the result of dividing two existing fields, and that &#039;&#039;&#039;$divide&#039;&#039;&#039; is an aggregate function.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Dealing with division by 0&amp;quot;&amp;gt;&lt;br /&gt;
To avoid diving by 0 insert a &#039;&#039;&#039;$match&#039;&#039;&#039; to remove any countries with no area (Vatican City), then pipe these results through to &#039;&#039;&#039;$project&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no need to check if values are &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;null&amp;lt;/syntaxhighlight&amp;gt;, MongoDB will ignore these documents.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Because aggregate is a pipeline stages may be repeated, and stages don&#039;t have to be used in a specific order.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of Asian countries with a density that&#039;s over 500 people per km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
   {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
   {$project: {&lt;br /&gt;
       _id: 0,&lt;br /&gt;
       name: 1,&lt;br /&gt;
       density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
   }},&lt;br /&gt;
   {$match: {density: {$gt: 500}}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}},{&amp;quot;$match&amp;quot;:{&amp;quot;density&amp;quot;:{&amp;quot;$gt&amp;quot;:500}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$sort&#039;&#039;&#039; allows ordering of the results set, where 1 is ascending and -1 is descending.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that not including &#039;&#039;&#039;$match&#039;&#039;&#039; is the same as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;{&amp;quot;$match&amp;quot;:{}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of all countries in descending order.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {&amp;quot;$project&amp;quot;:{&lt;br /&gt;
        &amp;quot;_id&amp;quot;:0,&lt;br /&gt;
        &amp;quot;name&amp;quot;:1,&lt;br /&gt;
    }},&lt;br /&gt;
    {&amp;quot;$sort&amp;quot;:{&lt;br /&gt;
        &amp;quot;name&amp;quot;:-1&lt;br /&gt;
    }}  &lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,}},{&amp;quot;$sort&amp;quot;:{&amp;quot;name&amp;quot;:-1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grouping==&lt;br /&gt;
Grouping provides accumulator operations such as &#039;&#039;&#039;$sum&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
All groups must have an &#039;&#039;&#039;_id&#039;&#039;&#039;. To see why this is useful imagine the following:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far you&#039;ve been using the &#039;&#039;&#039;world&#039;&#039;&#039; collection&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As every country has a continent, it would make sense to have countries as a nested document inside continents: e.g:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[    &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Africa&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;,    ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Angola&amp;quot;,      &amp;quot;capital&amp;quot;: &amp;quot;Luanda&amp;quot;,     ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Benin&amp;quot;,       &amp;quot;capital&amp;quot;: &amp;quot;Porto-Novo&amp;quot;, ...}.&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Asia&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,  ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Azerbaijan&amp;quot;,  &amp;quot;capital&amp;quot;: &amp;quot;Baku&amp;quot;,   ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Bahrain&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Manama&amp;quot;, ...},&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;world&#039;&#039;&#039; collection isn&#039;t like this however. It uses the following structure, which has a redundancy where &#039;&#039;&#039;continent&#039;&#039;&#039; is repeated for each country.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[ &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,   &amp;quot;continent&amp;quot;: &amp;quot;Asia&amp;quot;,   ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Albania&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Tirana&amp;quot;,  &amp;quot;continent&amp;quot;: &amp;quot;Europe&amp;quot;,  ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;, &amp;quot;contiennt&amp;quot;: &amp;quot;Africa&amp;quot;, ...},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code to group by continent is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
If instead the question was to group by country the code would be &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
To operate over the whole document (which would have the same effect as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;) &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;null&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: None&amp;lt;/syntaxhighlight&amp;gt; can be used.&lt;br /&gt;
==group operators==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;$max&#039;&#039;&#039; and &#039;&#039;&#039;$min&#039;&#039;&#039; can be used to get the largest and smallest values in a group.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Get the smallest and largest GDPs of each continent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &#039;$continent&#039;,&lt;br /&gt;
        min: {$min: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        max: {$max: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        min: 1,&lt;br /&gt;
        max: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&#039;_id&#039;:&#039;$continent&#039;,&#039;min&#039;:{&amp;quot;$min&amp;quot;:&amp;quot;$gdp&amp;quot;},&#039;max&#039;:{&amp;quot;$max&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;min&amp;quot;:1,&amp;quot;max&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Some other useful aggregate functions to know are &#039;&#039;&#039;$sum&#039;&#039;&#039; and average: &#039;&#039;&#039;$avg&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
The example below  combines previous example material.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Order the continents in descending order by total GDP, Include the average GDP for each country.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {}},&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id:&amp;quot;$continent&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: {&amp;quot;$sum&amp;quot;: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: {&amp;quot;$avg&amp;quot;: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;:-1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        &amp;quot;Area&amp;quot;: &amp;quot;$_id&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: 1,&lt;br /&gt;
        _id: 0&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;Total GDP&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$gdp&amp;quot;},&amp;quot;Average GDP&amp;quot;:{&amp;quot;$avg&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;Total GDP&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;Area&amp;quot;:&amp;quot;$_id&amp;quot;,&amp;quot;Total GDP&amp;quot;:1,&amp;quot;Average GDP&amp;quot;:1,&amp;quot;_id&amp;quot;:0}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Using Conditions&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$cond&#039;&#039;&#039; is similar to a &#039;&#039;&#039;CASE&#039;&#039;&#039; statement in other languages.&amp;lt;br/&amp;gt;&lt;br /&gt;
It has the form &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;$cond&amp;quot;: [{&amp;lt;comparison&amp;gt;: [&amp;lt;field or value&amp;gt;, &amp;lt;field or value&amp;gt;]}, &amp;lt;true case&amp;gt;, &amp;lt;false case&amp;gt;]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: {&lt;br /&gt;
            $cond: [{&amp;quot;$eq&amp;quot;: [&amp;quot;$continent&amp;quot;, &amp;quot;Eurasia&amp;quot;]}, &amp;quot;Europe&amp;quot;, &amp;quot;$continent&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1449</id>
		<title>AGGREGATE examples</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1449"/>
		<updated>2022-04-01T20:12:36Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==aggregate==&lt;br /&gt;
The aggregate function takes a list of operations - this is the pipeline.&lt;br /&gt;
&lt;br /&gt;
The data passes through each stage of the pipeline in turn.&lt;br /&gt;
&lt;br /&gt;
Pipeline stages can include:&lt;br /&gt;
* &#039;&#039;&#039;$group&#039;&#039;&#039; This is the aggregate special sauce; you specify the _id value, the output from this stage includes one entry for each distinct _id value. In SQL you would use a GROUP BY clause&lt;br /&gt;
* &#039;&#039;&#039;$match&#039;&#039;&#039; - this acts as a filter, some data items pass through this stage, some do not. Similar to the WHERE clause in SQL&lt;br /&gt;
* &#039;&#039;&#039;$project&#039;&#039;&#039; - this can be used to transform each element. Rather like the values on the SELECT line of an SQL query&lt;br /&gt;
* &#039;&#039;&#039;$limit&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;$sort&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;$skip&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$group&#039;&#039;&#039; allows you to collect group items that share common features&lt;br /&gt;
* _id - this determines the values to be grouped&lt;br /&gt;
* $continent and $population refers to keys &#039;continent&#039; and &#039;population&#039; available in each item&lt;br /&gt;
* $sum is an aggregating function, it takes many values in and returns a single value. Othe examples of aggregating functions are $min $max, $avg&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the continents&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate(&lt;br /&gt;
    {$group: {_id: &amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$match&#039;&#039;&#039; performs queries in a similar way to &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show all the details for France&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: &amp;quot;France&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:&amp;quot;France&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&#039;&#039;&#039;$limit&#039;&#039;&#039; sets the amount of documents to be handed to the next stage in the pipeline.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Return the first document&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$limit: 1}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$limit&amp;quot;:1}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$project&#039;&#039;&#039; selects what fields to display.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can also has the ability to create new fields and to compare fields against each other without using &#039;&#039;&#039;$where&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name and population density of all Asian countries. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
Note that &amp;quot;density&amp;quot; is a new field made from the result of dividing two existing fields, and that &#039;&#039;&#039;$divide&#039;&#039;&#039; is an aggregate function.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Dealing with division by 0&amp;quot;&amp;gt;&lt;br /&gt;
To avoid diving by 0 insert a &#039;&#039;&#039;$match&#039;&#039;&#039; to remove any countries with no area (Vatican City), then pipe these results through to &#039;&#039;&#039;$project&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no need to check if values are &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;null&amp;lt;/syntaxhighlight&amp;gt;, MongoDB will ignore these documents.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Because aggregate is a pipeline stages may be repeated, and stages don&#039;t have to be used in a specific order.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of Asian countries with a density that&#039;s over 500 people per km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
   {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
   {$project: {&lt;br /&gt;
       _id: 0,&lt;br /&gt;
       name: 1,&lt;br /&gt;
       density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
   }},&lt;br /&gt;
   {$match: {density: {$gt: 500}}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}},{&amp;quot;$match&amp;quot;:{&amp;quot;density&amp;quot;:{&amp;quot;$gt&amp;quot;:500}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$sort&#039;&#039;&#039; allows ordering of the results set, where 1 is ascending and -1 is descending.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that not including &#039;&#039;&#039;$match&#039;&#039;&#039; is the same as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;{&amp;quot;$match&amp;quot;:{}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of all countries in descending order.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {&amp;quot;$project&amp;quot;:{&lt;br /&gt;
        &amp;quot;_id&amp;quot;:0,&lt;br /&gt;
        &amp;quot;name&amp;quot;:1,&lt;br /&gt;
    }},&lt;br /&gt;
    {&amp;quot;$sort&amp;quot;:{&lt;br /&gt;
        &amp;quot;name&amp;quot;:-1&lt;br /&gt;
    }}  &lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,}},{&amp;quot;$sort&amp;quot;:{&amp;quot;name&amp;quot;:-1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grouping==&lt;br /&gt;
Grouping provides accumulator operations such as &#039;&#039;&#039;$sum&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
All groups must have an &#039;&#039;&#039;_id&#039;&#039;&#039;. To see why this is useful imagine the following:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far you&#039;ve been using the &#039;&#039;&#039;world&#039;&#039;&#039; collection&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As every country has a continent, it would make sense to have countries as a nested document inside continents: e.g:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[    &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Africa&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;,    ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Angola&amp;quot;,      &amp;quot;capital&amp;quot;: &amp;quot;Luanda&amp;quot;,     ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Benin&amp;quot;,       &amp;quot;capital&amp;quot;: &amp;quot;Porto-Novo&amp;quot;, ...}.&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Asia&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,  ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Azerbaijan&amp;quot;,  &amp;quot;capital&amp;quot;: &amp;quot;Baku&amp;quot;,   ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Bahrain&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Manama&amp;quot;, ...},&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;world&#039;&#039;&#039; collection isn&#039;t like this however. It uses the following structure, which has a redundancy where &#039;&#039;&#039;continent&#039;&#039;&#039; is repeated for each country.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[ &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,   &amp;quot;continent&amp;quot;: &amp;quot;Asia&amp;quot;,   ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Albania&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Tirana&amp;quot;,  &amp;quot;continent&amp;quot;: &amp;quot;Europe&amp;quot;,  ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;, &amp;quot;contiennt&amp;quot;: &amp;quot;Africa&amp;quot;, ...},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code to group by continent is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
If instead the question was to group by country the code would be &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
To operate over the whole document (which would have the same effect as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;) &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;null&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: None&amp;lt;/syntaxhighlight&amp;gt; can be used.&lt;br /&gt;
==group operators==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;$max&#039;&#039;&#039; and &#039;&#039;&#039;$min&#039;&#039;&#039; can be used to get the largest and smallest values in a group.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Get the smallest and largest GDPs of each continent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &#039;$continent&#039;,&lt;br /&gt;
        min: {$min: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        max: {$max: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        min: 1,&lt;br /&gt;
        max: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&#039;_id&#039;:&#039;$continent&#039;,&#039;min&#039;:{&amp;quot;$min&amp;quot;:&amp;quot;$gdp&amp;quot;},&#039;max&#039;:{&amp;quot;$max&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;min&amp;quot;:1,&amp;quot;max&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Some other useful aggregate functions to know are &#039;&#039;&#039;$sum&#039;&#039;&#039; and average: &#039;&#039;&#039;$avg&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
The example below  combines previous example material.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Order the continents in descending order by total GDP, Include the average GDP for each country.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {}},&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id:&amp;quot;$continent&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: {&amp;quot;$sum&amp;quot;: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: {&amp;quot;$avg&amp;quot;: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;:-1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        &amp;quot;Area&amp;quot;: &amp;quot;$_id&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: 1,&lt;br /&gt;
        _id: 0&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;Total GDP&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$gdp&amp;quot;},&amp;quot;Average GDP&amp;quot;:{&amp;quot;$avg&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;Total GDP&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;Area&amp;quot;:&amp;quot;$_id&amp;quot;,&amp;quot;Total GDP&amp;quot;:1,&amp;quot;Average GDP&amp;quot;:1,&amp;quot;_id&amp;quot;:0}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Using Conditions&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$cond&#039;&#039;&#039; is similar to a &#039;&#039;&#039;CASE&#039;&#039;&#039; statement in other languages.&amp;lt;br/&amp;gt;&lt;br /&gt;
It has the form &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;$cond&amp;quot;: [{&amp;lt;comparison&amp;gt;: [&amp;lt;field or value&amp;gt;, &amp;lt;field or value&amp;gt;]}, &amp;lt;true case&amp;gt;, &amp;lt;false case&amp;gt;]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: {&lt;br /&gt;
            $cond: [{&amp;quot;$eq&amp;quot;: [&amp;quot;$continent&amp;quot;, &amp;quot;Eurasia&amp;quot;]}, &amp;quot;Europe&amp;quot;, &amp;quot;$continent&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1448</id>
		<title>AGGREGATE examples</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1448"/>
		<updated>2022-04-01T20:10:14Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Introducing the aggregate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==aggregate==&lt;br /&gt;
The aggregate function takes a list of operations - this is the pipeline.&lt;br /&gt;
&lt;br /&gt;
The data passes through each stage of the pipeline in turn.&lt;br /&gt;
&lt;br /&gt;
Pipeline stages can include:&lt;br /&gt;
* &#039;&#039;&#039;$group&#039;&#039;&#039; This is the aggregate special sauce; you specify the _id value, the output from this stage includes one entry for each distinct _id value. In SQL you would use a GROUP BY clause&lt;br /&gt;
* &#039;&#039;&#039;$match&#039;&#039;&#039; - this acts as a filter, some data items pass through this stage, some do not. Similar to the WHERE clause in SQL&lt;br /&gt;
* &#039;&#039;&#039;$project&#039;&#039;&#039; - this can be used to transform each element. Rather like the values on the SELECT line of an SQL query&lt;br /&gt;
* &#039;&#039;&#039;$limit&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;$sort&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;$skip&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$group&#039;&#039;&#039; allows you to collect group items that share common features&lt;br /&gt;
* _id - this determines the values to be grouped&lt;br /&gt;
* $continent and $population refers to keys &#039;continent&#039; and &#039;population&#039; available in each item&lt;br /&gt;
* $sum is a keyword&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the continents&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate(&lt;br /&gt;
    {$group: {_id: &amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$match&#039;&#039;&#039; performs queries in a similar way to &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show all the details for France&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: &amp;quot;France&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:&amp;quot;France&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&#039;&#039;&#039;$limit&#039;&#039;&#039; sets the amount of documents to be handed to the next stage in the pipeline.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Return the first document&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$limit: 1}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$limit&amp;quot;:1}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$project&#039;&#039;&#039; selects what fields to display.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can also has the ability to create new fields and to compare fields against each other without using &#039;&#039;&#039;$where&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name and population density of all Asian countries. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
Note that &amp;quot;density&amp;quot; is a new field made from the result of dividing two existing fields, and that &#039;&#039;&#039;$divide&#039;&#039;&#039; is an aggregate function.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Dealing with division by 0&amp;quot;&amp;gt;&lt;br /&gt;
To avoid diving by 0 insert a &#039;&#039;&#039;$match&#039;&#039;&#039; to remove any countries with no area (Vatican City), then pipe these results through to &#039;&#039;&#039;$project&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no need to check if values are &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;null&amp;lt;/syntaxhighlight&amp;gt;, MongoDB will ignore these documents.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Because aggregate is a pipeline stages may be repeated, and stages don&#039;t have to be used in a specific order.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of Asian countries with a density that&#039;s over 500 people per km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
   {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
   {$project: {&lt;br /&gt;
       _id: 0,&lt;br /&gt;
       name: 1,&lt;br /&gt;
       density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
   }},&lt;br /&gt;
   {$match: {density: {$gt: 500}}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}},{&amp;quot;$match&amp;quot;:{&amp;quot;density&amp;quot;:{&amp;quot;$gt&amp;quot;:500}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$sort&#039;&#039;&#039; allows ordering of the results set, where 1 is ascending and -1 is descending.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that not including &#039;&#039;&#039;$match&#039;&#039;&#039; is the same as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;{&amp;quot;$match&amp;quot;:{}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of all countries in descending order.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {&amp;quot;$project&amp;quot;:{&lt;br /&gt;
        &amp;quot;_id&amp;quot;:0,&lt;br /&gt;
        &amp;quot;name&amp;quot;:1,&lt;br /&gt;
    }},&lt;br /&gt;
    {&amp;quot;$sort&amp;quot;:{&lt;br /&gt;
        &amp;quot;name&amp;quot;:-1&lt;br /&gt;
    }}  &lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,}},{&amp;quot;$sort&amp;quot;:{&amp;quot;name&amp;quot;:-1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grouping==&lt;br /&gt;
Grouping provides accumulator operations such as &#039;&#039;&#039;$sum&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
All groups must have an &#039;&#039;&#039;_id&#039;&#039;&#039;. To see why this is useful imagine the following:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far you&#039;ve been using the &#039;&#039;&#039;world&#039;&#039;&#039; collection&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As every country has a continent, it would make sense to have countries as a nested document inside continents: e.g:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[    &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Africa&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;,    ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Angola&amp;quot;,      &amp;quot;capital&amp;quot;: &amp;quot;Luanda&amp;quot;,     ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Benin&amp;quot;,       &amp;quot;capital&amp;quot;: &amp;quot;Porto-Novo&amp;quot;, ...}.&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Asia&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,  ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Azerbaijan&amp;quot;,  &amp;quot;capital&amp;quot;: &amp;quot;Baku&amp;quot;,   ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Bahrain&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Manama&amp;quot;, ...},&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;world&#039;&#039;&#039; collection isn&#039;t like this however. It uses the following structure, which has a redundancy where &#039;&#039;&#039;continent&#039;&#039;&#039; is repeated for each country.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[ &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,   &amp;quot;continent&amp;quot;: &amp;quot;Asia&amp;quot;,   ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Albania&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Tirana&amp;quot;,  &amp;quot;continent&amp;quot;: &amp;quot;Europe&amp;quot;,  ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;, &amp;quot;contiennt&amp;quot;: &amp;quot;Africa&amp;quot;, ...},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code to group by continent is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
If instead the question was to group by country the code would be &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
To operate over the whole document (which would have the same effect as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;) &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;null&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: None&amp;lt;/syntaxhighlight&amp;gt; can be used.&lt;br /&gt;
==group operators==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;$max&#039;&#039;&#039; and &#039;&#039;&#039;$min&#039;&#039;&#039; can be used to get the largest and smallest values in a group.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Get the smallest and largest GDPs of each continent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &#039;$continent&#039;,&lt;br /&gt;
        min: {$min: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        max: {$max: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        min: 1,&lt;br /&gt;
        max: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&#039;_id&#039;:&#039;$continent&#039;,&#039;min&#039;:{&amp;quot;$min&amp;quot;:&amp;quot;$gdp&amp;quot;},&#039;max&#039;:{&amp;quot;$max&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;min&amp;quot;:1,&amp;quot;max&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Some other useful aggregate functions to know are &#039;&#039;&#039;$sum&#039;&#039;&#039; and average: &#039;&#039;&#039;$avg&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
The example below  combines previous example material.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Order the continents in descending order by total GDP, Include the average GDP for each country.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {}},&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id:&amp;quot;$continent&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: {&amp;quot;$sum&amp;quot;: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: {&amp;quot;$avg&amp;quot;: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;:-1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        &amp;quot;Area&amp;quot;: &amp;quot;$_id&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: 1,&lt;br /&gt;
        _id: 0&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;Total GDP&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$gdp&amp;quot;},&amp;quot;Average GDP&amp;quot;:{&amp;quot;$avg&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;Total GDP&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;Area&amp;quot;:&amp;quot;$_id&amp;quot;,&amp;quot;Total GDP&amp;quot;:1,&amp;quot;Average GDP&amp;quot;:1,&amp;quot;_id&amp;quot;:0}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Using Conditions&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$cond&#039;&#039;&#039; is similar to a &#039;&#039;&#039;CASE&#039;&#039;&#039; statement in other languages.&amp;lt;br/&amp;gt;&lt;br /&gt;
It has the form &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;$cond&amp;quot;: [{&amp;lt;comparison&amp;gt;: [&amp;lt;field or value&amp;gt;, &amp;lt;field or value&amp;gt;]}, &amp;lt;true case&amp;gt;, &amp;lt;false case&amp;gt;]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: {&lt;br /&gt;
            $cond: [{&amp;quot;$eq&amp;quot;: [&amp;quot;$continent&amp;quot;, &amp;quot;Eurasia&amp;quot;]}, &amp;quot;Europe&amp;quot;, &amp;quot;$continent&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1447</id>
		<title>AGGREGATE examples</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1447"/>
		<updated>2022-04-01T20:02:48Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Introducing the aggregation framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducing the &amp;lt;code&amp;gt;aggregate&amp;lt;/code&amp;gt;==&lt;br /&gt;
These examples introduce the aggregation framework and its operators. Again we will be using the &#039;&#039;&#039;world&#039;&#039;&#039; collection.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$group&#039;&#039;&#039; allows you to collect group items that share common features&lt;br /&gt;
* _id - this determines the values to be grouped&lt;br /&gt;
* $continent and $population refers to keys &#039;continent&#039; and &#039;population&#039; available in each item&lt;br /&gt;
* $sum is a keyword&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the continents&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate(&lt;br /&gt;
    {$group: {_id: &amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$match&#039;&#039;&#039; performs queries in a similar way to &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show all the details for France&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: &amp;quot;France&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:&amp;quot;France&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&#039;&#039;&#039;$limit&#039;&#039;&#039; sets the amount of documents to be handed to the next stage in the pipeline.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Return the first document&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$limit: 1}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$limit&amp;quot;:1}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$project&#039;&#039;&#039; selects what fields to display.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can also has the ability to create new fields and to compare fields against each other without using &#039;&#039;&#039;$where&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name and population density of all Asian countries. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
Note that &amp;quot;density&amp;quot; is a new field made from the result of dividing two existing fields, and that &#039;&#039;&#039;$divide&#039;&#039;&#039; is an aggregate function.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Dealing with division by 0&amp;quot;&amp;gt;&lt;br /&gt;
To avoid diving by 0 insert a &#039;&#039;&#039;$match&#039;&#039;&#039; to remove any countries with no area (Vatican City), then pipe these results through to &#039;&#039;&#039;$project&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no need to check if values are &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;null&amp;lt;/syntaxhighlight&amp;gt;, MongoDB will ignore these documents.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Because aggregate is a pipeline stages may be repeated, and stages don&#039;t have to be used in a specific order.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of Asian countries with a density that&#039;s over 500 people per km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
   {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
   {$project: {&lt;br /&gt;
       _id: 0,&lt;br /&gt;
       name: 1,&lt;br /&gt;
       density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
   }},&lt;br /&gt;
   {$match: {density: {$gt: 500}}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}},{&amp;quot;$match&amp;quot;:{&amp;quot;density&amp;quot;:{&amp;quot;$gt&amp;quot;:500}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$sort&#039;&#039;&#039; allows ordering of the results set, where 1 is ascending and -1 is descending.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that not including &#039;&#039;&#039;$match&#039;&#039;&#039; is the same as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;{&amp;quot;$match&amp;quot;:{}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of all countries in descending order.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {&amp;quot;$project&amp;quot;:{&lt;br /&gt;
        &amp;quot;_id&amp;quot;:0,&lt;br /&gt;
        &amp;quot;name&amp;quot;:1,&lt;br /&gt;
    }},&lt;br /&gt;
    {&amp;quot;$sort&amp;quot;:{&lt;br /&gt;
        &amp;quot;name&amp;quot;:-1&lt;br /&gt;
    }}  &lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,}},{&amp;quot;$sort&amp;quot;:{&amp;quot;name&amp;quot;:-1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grouping==&lt;br /&gt;
Grouping provides accumulator operations such as &#039;&#039;&#039;$sum&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
All groups must have an &#039;&#039;&#039;_id&#039;&#039;&#039;. To see why this is useful imagine the following:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far you&#039;ve been using the &#039;&#039;&#039;world&#039;&#039;&#039; collection&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As every country has a continent, it would make sense to have countries as a nested document inside continents: e.g:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[    &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Africa&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;,    ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Angola&amp;quot;,      &amp;quot;capital&amp;quot;: &amp;quot;Luanda&amp;quot;,     ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Benin&amp;quot;,       &amp;quot;capital&amp;quot;: &amp;quot;Porto-Novo&amp;quot;, ...}.&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Asia&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,  ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Azerbaijan&amp;quot;,  &amp;quot;capital&amp;quot;: &amp;quot;Baku&amp;quot;,   ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Bahrain&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Manama&amp;quot;, ...},&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;world&#039;&#039;&#039; collection isn&#039;t like this however. It uses the following structure, which has a redundancy where &#039;&#039;&#039;continent&#039;&#039;&#039; is repeated for each country.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[ &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,   &amp;quot;continent&amp;quot;: &amp;quot;Asia&amp;quot;,   ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Albania&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Tirana&amp;quot;,  &amp;quot;continent&amp;quot;: &amp;quot;Europe&amp;quot;,  ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;, &amp;quot;contiennt&amp;quot;: &amp;quot;Africa&amp;quot;, ...},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code to group by continent is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
If instead the question was to group by country the code would be &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
To operate over the whole document (which would have the same effect as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;) &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;null&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: None&amp;lt;/syntaxhighlight&amp;gt; can be used.&lt;br /&gt;
==group operators==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;$max&#039;&#039;&#039; and &#039;&#039;&#039;$min&#039;&#039;&#039; can be used to get the largest and smallest values in a group.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Get the smallest and largest GDPs of each continent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &#039;$continent&#039;,&lt;br /&gt;
        min: {$min: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        max: {$max: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        min: 1,&lt;br /&gt;
        max: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&#039;_id&#039;:&#039;$continent&#039;,&#039;min&#039;:{&amp;quot;$min&amp;quot;:&amp;quot;$gdp&amp;quot;},&#039;max&#039;:{&amp;quot;$max&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;min&amp;quot;:1,&amp;quot;max&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Some other useful aggregate functions to know are &#039;&#039;&#039;$sum&#039;&#039;&#039; and average: &#039;&#039;&#039;$avg&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
The example below  combines previous example material.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Order the continents in descending order by total GDP, Include the average GDP for each country.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {}},&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id:&amp;quot;$continent&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: {&amp;quot;$sum&amp;quot;: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: {&amp;quot;$avg&amp;quot;: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;:-1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        &amp;quot;Area&amp;quot;: &amp;quot;$_id&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: 1,&lt;br /&gt;
        _id: 0&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;Total GDP&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$gdp&amp;quot;},&amp;quot;Average GDP&amp;quot;:{&amp;quot;$avg&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;Total GDP&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;Area&amp;quot;:&amp;quot;$_id&amp;quot;,&amp;quot;Total GDP&amp;quot;:1,&amp;quot;Average GDP&amp;quot;:1,&amp;quot;_id&amp;quot;:0}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Using Conditions&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$cond&#039;&#039;&#039; is similar to a &#039;&#039;&#039;CASE&#039;&#039;&#039; statement in other languages.&amp;lt;br/&amp;gt;&lt;br /&gt;
It has the form &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;$cond&amp;quot;: [{&amp;lt;comparison&amp;gt;: [&amp;lt;field or value&amp;gt;, &amp;lt;field or value&amp;gt;]}, &amp;lt;true case&amp;gt;, &amp;lt;false case&amp;gt;]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: {&lt;br /&gt;
            $cond: [{&amp;quot;$eq&amp;quot;: [&amp;quot;$continent&amp;quot;, &amp;quot;Eurasia&amp;quot;]}, &amp;quot;Europe&amp;quot;, &amp;quot;$continent&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1446</id>
		<title>AGGREGATE examples</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1446"/>
		<updated>2021-05-14T08:58:36Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducing the aggregation framework==&lt;br /&gt;
These examples introduce the aggregation framework and its operators. Again we will be using the &#039;&#039;&#039;world&#039;&#039;&#039; collection.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$group&#039;&#039;&#039; allows you to collect group items that share common features&lt;br /&gt;
* _id - this determines the values to be grouped&lt;br /&gt;
* $continent and $population refers to keys &#039;continent&#039; and &#039;population&#039; available in each item&lt;br /&gt;
* $sum is a keyword&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the continents&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate(&lt;br /&gt;
    {$group: {_id: &amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$match&#039;&#039;&#039; performs queries in a similar way to &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show all the details for France&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: &amp;quot;France&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:&amp;quot;France&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&#039;&#039;&#039;$limit&#039;&#039;&#039; sets the amount of documents to be handed to the next stage in the pipeline.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Return the first document&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$limit: 1}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$limit&amp;quot;:1}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$project&#039;&#039;&#039; selects what fields to display.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can also has the ability to create new fields and to compare fields against each other without using &#039;&#039;&#039;$where&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name and population density of all Asian countries. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
Note that &amp;quot;density&amp;quot; is a new field made from the result of dividing two existing fields, and that &#039;&#039;&#039;$divide&#039;&#039;&#039; is an aggregate function.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Dealing with division by 0&amp;quot;&amp;gt;&lt;br /&gt;
To avoid diving by 0 insert a &#039;&#039;&#039;$match&#039;&#039;&#039; to remove any countries with no area (Vatican City), then pipe these results through to &#039;&#039;&#039;$project&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no need to check if values are &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;null&amp;lt;/syntaxhighlight&amp;gt;, MongoDB will ignore these documents.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Because aggregate is a pipeline stages may be repeated, and stages don&#039;t have to be used in a specific order.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of Asian countries with a density that&#039;s over 500 people per km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
   {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
   {$project: {&lt;br /&gt;
       _id: 0,&lt;br /&gt;
       name: 1,&lt;br /&gt;
       density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
   }},&lt;br /&gt;
   {$match: {density: {$gt: 500}}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}},{&amp;quot;$match&amp;quot;:{&amp;quot;density&amp;quot;:{&amp;quot;$gt&amp;quot;:500}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$sort&#039;&#039;&#039; allows ordering of the results set, where 1 is ascending and -1 is descending.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that not including &#039;&#039;&#039;$match&#039;&#039;&#039; is the same as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;{&amp;quot;$match&amp;quot;:{}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of all countries in descending order.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {&amp;quot;$project&amp;quot;:{&lt;br /&gt;
        &amp;quot;_id&amp;quot;:0,&lt;br /&gt;
        &amp;quot;name&amp;quot;:1,&lt;br /&gt;
    }},&lt;br /&gt;
    {&amp;quot;$sort&amp;quot;:{&lt;br /&gt;
        &amp;quot;name&amp;quot;:-1&lt;br /&gt;
    }}  &lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,}},{&amp;quot;$sort&amp;quot;:{&amp;quot;name&amp;quot;:-1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grouping==&lt;br /&gt;
Grouping provides accumulator operations such as &#039;&#039;&#039;$sum&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
All groups must have an &#039;&#039;&#039;_id&#039;&#039;&#039;. To see why this is useful imagine the following:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far you&#039;ve been using the &#039;&#039;&#039;world&#039;&#039;&#039; collection&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As every country has a continent, it would make sense to have countries as a nested document inside continents: e.g:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[    &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Africa&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;,    ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Angola&amp;quot;,      &amp;quot;capital&amp;quot;: &amp;quot;Luanda&amp;quot;,     ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Benin&amp;quot;,       &amp;quot;capital&amp;quot;: &amp;quot;Porto-Novo&amp;quot;, ...}.&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Asia&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,  ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Azerbaijan&amp;quot;,  &amp;quot;capital&amp;quot;: &amp;quot;Baku&amp;quot;,   ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Bahrain&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Manama&amp;quot;, ...},&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;world&#039;&#039;&#039; collection isn&#039;t like this however. It uses the following structure, which has a redundancy where &#039;&#039;&#039;continent&#039;&#039;&#039; is repeated for each country.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[ &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,   &amp;quot;continent&amp;quot;: &amp;quot;Asia&amp;quot;,   ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Albania&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Tirana&amp;quot;,  &amp;quot;continent&amp;quot;: &amp;quot;Europe&amp;quot;,  ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;, &amp;quot;contiennt&amp;quot;: &amp;quot;Africa&amp;quot;, ...},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code to group by continent is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
If instead the question was to group by country the code would be &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
To operate over the whole document (which would have the same effect as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;) &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;null&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: None&amp;lt;/syntaxhighlight&amp;gt; can be used.&lt;br /&gt;
==group operators==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;$max&#039;&#039;&#039; and &#039;&#039;&#039;$min&#039;&#039;&#039; can be used to get the largest and smallest values in a group.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Get the smallest and largest GDPs of each continent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &#039;$continent&#039;,&lt;br /&gt;
        min: {$min: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        max: {$max: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        min: 1,&lt;br /&gt;
        max: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&#039;_id&#039;:&#039;$continent&#039;,&#039;min&#039;:{&amp;quot;$min&amp;quot;:&amp;quot;$gdp&amp;quot;},&#039;max&#039;:{&amp;quot;$max&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;min&amp;quot;:1,&amp;quot;max&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Some other useful aggregate functions to know are &#039;&#039;&#039;$sum&#039;&#039;&#039; and average: &#039;&#039;&#039;$avg&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
The example below  combines previous example material.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Order the continents in descending order by total GDP, Include the average GDP for each country.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {}},&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id:&amp;quot;$continent&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: {&amp;quot;$sum&amp;quot;: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: {&amp;quot;$avg&amp;quot;: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;:-1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        &amp;quot;Area&amp;quot;: &amp;quot;$_id&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: 1,&lt;br /&gt;
        _id: 0&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;Total GDP&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$gdp&amp;quot;},&amp;quot;Average GDP&amp;quot;:{&amp;quot;$avg&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;Total GDP&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;Area&amp;quot;:&amp;quot;$_id&amp;quot;,&amp;quot;Total GDP&amp;quot;:1,&amp;quot;Average GDP&amp;quot;:1,&amp;quot;_id&amp;quot;:0}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Using Conditions&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$cond&#039;&#039;&#039; is similar to a &#039;&#039;&#039;CASE&#039;&#039;&#039; statement in other languages.&amp;lt;br/&amp;gt;&lt;br /&gt;
It has the form &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;$cond&amp;quot;: [{&amp;lt;comparison&amp;gt;: [&amp;lt;field or value&amp;gt;, &amp;lt;field or value&amp;gt;]}, &amp;lt;true case&amp;gt;, &amp;lt;false case&amp;gt;]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: {&lt;br /&gt;
            $cond: [{&amp;quot;$eq&amp;quot;: [&amp;quot;$continent&amp;quot;, &amp;quot;Eurasia&amp;quot;]}, &amp;quot;Europe&amp;quot;, &amp;quot;$continent&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1445</id>
		<title>AGGREGATE examples</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1445"/>
		<updated>2021-05-14T08:57:46Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducing the aggregation framework==&lt;br /&gt;
These examples introduce the aggregation framework and its operators. Again we will be using the &#039;&#039;&#039;world&#039;&#039;&#039; collection.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$group&#039;&#039;&#039; allows you to collect group items that share common features&lt;br /&gt;
* _id - this determines the values to be grouped&lt;br /&gt;
* $continent and $population refers to keys &#039;continent&#039; and &#039;population&#039; available in each item&lt;br /&gt;
* $sum is a keyword&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the continents&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate(&lt;br /&gt;
    {$group: {_id: &amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group: {_id: &amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$match&#039;&#039;&#039; performs queries in a similar way to &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show all the details for France&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: &amp;quot;France&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:&amp;quot;France&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&#039;&#039;&#039;$limit&#039;&#039;&#039; sets the amount of documents to be handed to the next stage in the pipeline.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Return the first document&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$limit: 1}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$limit&amp;quot;:1}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$project&#039;&#039;&#039; selects what fields to display.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can also has the ability to create new fields and to compare fields against each other without using &#039;&#039;&#039;$where&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name and population density of all Asian countries. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
Note that &amp;quot;density&amp;quot; is a new field made from the result of dividing two existing fields, and that &#039;&#039;&#039;$divide&#039;&#039;&#039; is an aggregate function.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Dealing with division by 0&amp;quot;&amp;gt;&lt;br /&gt;
To avoid diving by 0 insert a &#039;&#039;&#039;$match&#039;&#039;&#039; to remove any countries with no area (Vatican City), then pipe these results through to &#039;&#039;&#039;$project&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no need to check if values are &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;null&amp;lt;/syntaxhighlight&amp;gt;, MongoDB will ignore these documents.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Because aggregate is a pipeline stages may be repeated, and stages don&#039;t have to be used in a specific order.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of Asian countries with a density that&#039;s over 500 people per km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
   {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
   {$project: {&lt;br /&gt;
       _id: 0,&lt;br /&gt;
       name: 1,&lt;br /&gt;
       density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
   }},&lt;br /&gt;
   {$match: {density: {$gt: 500}}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}},{&amp;quot;$match&amp;quot;:{&amp;quot;density&amp;quot;:{&amp;quot;$gt&amp;quot;:500}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$sort&#039;&#039;&#039; allows ordering of the results set, where 1 is ascending and -1 is descending.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that not including &#039;&#039;&#039;$match&#039;&#039;&#039; is the same as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;{&amp;quot;$match&amp;quot;:{}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of all countries in descending order.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {&amp;quot;$project&amp;quot;:{&lt;br /&gt;
        &amp;quot;_id&amp;quot;:0,&lt;br /&gt;
        &amp;quot;name&amp;quot;:1,&lt;br /&gt;
    }},&lt;br /&gt;
    {&amp;quot;$sort&amp;quot;:{&lt;br /&gt;
        &amp;quot;name&amp;quot;:-1&lt;br /&gt;
    }}  &lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,}},{&amp;quot;$sort&amp;quot;:{&amp;quot;name&amp;quot;:-1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grouping==&lt;br /&gt;
Grouping provides accumulator operations such as &#039;&#039;&#039;$sum&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
All groups must have an &#039;&#039;&#039;_id&#039;&#039;&#039;. To see why this is useful imagine the following:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far you&#039;ve been using the &#039;&#039;&#039;world&#039;&#039;&#039; collection&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As every country has a continent, it would make sense to have countries as a nested document inside continents: e.g:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[    &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Africa&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;,    ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Angola&amp;quot;,      &amp;quot;capital&amp;quot;: &amp;quot;Luanda&amp;quot;,     ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Benin&amp;quot;,       &amp;quot;capital&amp;quot;: &amp;quot;Porto-Novo&amp;quot;, ...}.&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Asia&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,  ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Azerbaijan&amp;quot;,  &amp;quot;capital&amp;quot;: &amp;quot;Baku&amp;quot;,   ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Bahrain&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Manama&amp;quot;, ...},&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;world&#039;&#039;&#039; collection isn&#039;t like this however. It uses the following structure, which has a redundancy where &#039;&#039;&#039;continent&#039;&#039;&#039; is repeated for each country.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[ &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,   &amp;quot;continent&amp;quot;: &amp;quot;Asia&amp;quot;,   ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Albania&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Tirana&amp;quot;,  &amp;quot;continent&amp;quot;: &amp;quot;Europe&amp;quot;,  ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;, &amp;quot;contiennt&amp;quot;: &amp;quot;Africa&amp;quot;, ...},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code to group by continent is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
If instead the question was to group by country the code would be &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
To operate over the whole document (which would have the same effect as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;) &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;null&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: None&amp;lt;/syntaxhighlight&amp;gt; can be used.&lt;br /&gt;
==group operators==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;$max&#039;&#039;&#039; and &#039;&#039;&#039;$min&#039;&#039;&#039; can be used to get the largest and smallest values in a group.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Get the smallest and largest GDPs of each continent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &#039;$continent&#039;,&lt;br /&gt;
        min: {$min: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        max: {$max: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        min: 1,&lt;br /&gt;
        max: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&#039;_id&#039;:&#039;$continent&#039;,&#039;min&#039;:{&amp;quot;$min&amp;quot;:&amp;quot;$gdp&amp;quot;},&#039;max&#039;:{&amp;quot;$max&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;min&amp;quot;:1,&amp;quot;max&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Some other useful aggregate functions to know are &#039;&#039;&#039;$sum&#039;&#039;&#039; and average: &#039;&#039;&#039;$avg&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
The example below  combines previous example material.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Order the continents in descending order by total GDP, Include the average GDP for each country.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {}},&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id:&amp;quot;$continent&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: {&amp;quot;$sum&amp;quot;: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: {&amp;quot;$avg&amp;quot;: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;:-1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        &amp;quot;Area&amp;quot;: &amp;quot;$_id&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: 1,&lt;br /&gt;
        _id: 0&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;Total GDP&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$gdp&amp;quot;},&amp;quot;Average GDP&amp;quot;:{&amp;quot;$avg&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;Total GDP&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;Area&amp;quot;:&amp;quot;$_id&amp;quot;,&amp;quot;Total GDP&amp;quot;:1,&amp;quot;Average GDP&amp;quot;:1,&amp;quot;_id&amp;quot;:0}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Using Conditions&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$cond&#039;&#039;&#039; is similar to a &#039;&#039;&#039;CASE&#039;&#039;&#039; statement in other languages.&amp;lt;br/&amp;gt;&lt;br /&gt;
It has the form &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;$cond&amp;quot;: [{&amp;lt;comparison&amp;gt;: [&amp;lt;field or value&amp;gt;, &amp;lt;field or value&amp;gt;]}, &amp;lt;true case&amp;gt;, &amp;lt;false case&amp;gt;]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: {&lt;br /&gt;
            $cond: [{&amp;quot;$eq&amp;quot;: [&amp;quot;$continent&amp;quot;, &amp;quot;Eurasia&amp;quot;]}, &amp;quot;Europe&amp;quot;, &amp;quot;$continent&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1444</id>
		<title>AGGREGATE examples</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1444"/>
		<updated>2021-05-14T08:57:06Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducing the aggregation framework==&lt;br /&gt;
These examples introduce the aggregation framework and its operators. Again we will be using the &#039;&#039;&#039;world&#039;&#039;&#039; collection.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$group&#039;&#039;&#039; allows you to collect group items that share common features&lt;br /&gt;
* _id - this determines the values to be grouped&lt;br /&gt;
* $continent and $population refers to keys &#039;continent&#039; and &#039;population&#039; available in each item&lt;br /&gt;
* $sum is a keyword&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the continents&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate(&lt;br /&gt;
    {$group: {_id: &amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;}, pop:{$sum:&#039;$population&#039;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$match&#039;&#039;&#039; performs queries in a similar way to &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show all the details for France&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: &amp;quot;France&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:&amp;quot;France&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&#039;&#039;&#039;$limit&#039;&#039;&#039; sets the amount of documents to be handed to the next stage in the pipeline.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Return the first document&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$limit: 1}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$limit&amp;quot;:1}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$project&#039;&#039;&#039; selects what fields to display.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can also has the ability to create new fields and to compare fields against each other without using &#039;&#039;&#039;$where&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name and population density of all Asian countries. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
Note that &amp;quot;density&amp;quot; is a new field made from the result of dividing two existing fields, and that &#039;&#039;&#039;$divide&#039;&#039;&#039; is an aggregate function.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Dealing with division by 0&amp;quot;&amp;gt;&lt;br /&gt;
To avoid diving by 0 insert a &#039;&#039;&#039;$match&#039;&#039;&#039; to remove any countries with no area (Vatican City), then pipe these results through to &#039;&#039;&#039;$project&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no need to check if values are &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;null&amp;lt;/syntaxhighlight&amp;gt;, MongoDB will ignore these documents.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Because aggregate is a pipeline stages may be repeated, and stages don&#039;t have to be used in a specific order.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of Asian countries with a density that&#039;s over 500 people per km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
   {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
   {$project: {&lt;br /&gt;
       _id: 0,&lt;br /&gt;
       name: 1,&lt;br /&gt;
       density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
   }},&lt;br /&gt;
   {$match: {density: {$gt: 500}}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}},{&amp;quot;$match&amp;quot;:{&amp;quot;density&amp;quot;:{&amp;quot;$gt&amp;quot;:500}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$sort&#039;&#039;&#039; allows ordering of the results set, where 1 is ascending and -1 is descending.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that not including &#039;&#039;&#039;$match&#039;&#039;&#039; is the same as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;{&amp;quot;$match&amp;quot;:{}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of all countries in descending order.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {&amp;quot;$project&amp;quot;:{&lt;br /&gt;
        &amp;quot;_id&amp;quot;:0,&lt;br /&gt;
        &amp;quot;name&amp;quot;:1,&lt;br /&gt;
    }},&lt;br /&gt;
    {&amp;quot;$sort&amp;quot;:{&lt;br /&gt;
        &amp;quot;name&amp;quot;:-1&lt;br /&gt;
    }}  &lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,}},{&amp;quot;$sort&amp;quot;:{&amp;quot;name&amp;quot;:-1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grouping==&lt;br /&gt;
Grouping provides accumulator operations such as &#039;&#039;&#039;$sum&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
All groups must have an &#039;&#039;&#039;_id&#039;&#039;&#039;. To see why this is useful imagine the following:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far you&#039;ve been using the &#039;&#039;&#039;world&#039;&#039;&#039; collection&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As every country has a continent, it would make sense to have countries as a nested document inside continents: e.g:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[    &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Africa&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;,    ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Angola&amp;quot;,      &amp;quot;capital&amp;quot;: &amp;quot;Luanda&amp;quot;,     ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Benin&amp;quot;,       &amp;quot;capital&amp;quot;: &amp;quot;Porto-Novo&amp;quot;, ...}.&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Asia&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,  ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Azerbaijan&amp;quot;,  &amp;quot;capital&amp;quot;: &amp;quot;Baku&amp;quot;,   ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Bahrain&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Manama&amp;quot;, ...},&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;world&#039;&#039;&#039; collection isn&#039;t like this however. It uses the following structure, which has a redundancy where &#039;&#039;&#039;continent&#039;&#039;&#039; is repeated for each country.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[ &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,   &amp;quot;continent&amp;quot;: &amp;quot;Asia&amp;quot;,   ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Albania&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Tirana&amp;quot;,  &amp;quot;continent&amp;quot;: &amp;quot;Europe&amp;quot;,  ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;, &amp;quot;contiennt&amp;quot;: &amp;quot;Africa&amp;quot;, ...},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code to group by continent is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
If instead the question was to group by country the code would be &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
To operate over the whole document (which would have the same effect as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;) &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;null&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: None&amp;lt;/syntaxhighlight&amp;gt; can be used.&lt;br /&gt;
==group operators==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;$max&#039;&#039;&#039; and &#039;&#039;&#039;$min&#039;&#039;&#039; can be used to get the largest and smallest values in a group.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Get the smallest and largest GDPs of each continent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &#039;$continent&#039;,&lt;br /&gt;
        min: {$min: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        max: {$max: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        min: 1,&lt;br /&gt;
        max: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&#039;_id&#039;:&#039;$continent&#039;,&#039;min&#039;:{&amp;quot;$min&amp;quot;:&amp;quot;$gdp&amp;quot;},&#039;max&#039;:{&amp;quot;$max&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;min&amp;quot;:1,&amp;quot;max&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Some other useful aggregate functions to know are &#039;&#039;&#039;$sum&#039;&#039;&#039; and average: &#039;&#039;&#039;$avg&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
The example below  combines previous example material.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Order the continents in descending order by total GDP, Include the average GDP for each country.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {}},&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id:&amp;quot;$continent&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: {&amp;quot;$sum&amp;quot;: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: {&amp;quot;$avg&amp;quot;: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;:-1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        &amp;quot;Area&amp;quot;: &amp;quot;$_id&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: 1,&lt;br /&gt;
        _id: 0&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;Total GDP&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$gdp&amp;quot;},&amp;quot;Average GDP&amp;quot;:{&amp;quot;$avg&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;Total GDP&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;Area&amp;quot;:&amp;quot;$_id&amp;quot;,&amp;quot;Total GDP&amp;quot;:1,&amp;quot;Average GDP&amp;quot;:1,&amp;quot;_id&amp;quot;:0}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Using Conditions&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$cond&#039;&#039;&#039; is similar to a &#039;&#039;&#039;CASE&#039;&#039;&#039; statement in other languages.&amp;lt;br/&amp;gt;&lt;br /&gt;
It has the form &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;$cond&amp;quot;: [{&amp;lt;comparison&amp;gt;: [&amp;lt;field or value&amp;gt;, &amp;lt;field or value&amp;gt;]}, &amp;lt;true case&amp;gt;, &amp;lt;false case&amp;gt;]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: {&lt;br /&gt;
            $cond: [{&amp;quot;$eq&amp;quot;: [&amp;quot;$continent&amp;quot;, &amp;quot;Eurasia&amp;quot;]}, &amp;quot;Europe&amp;quot;, &amp;quot;$continent&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1443</id>
		<title>AGGREGATE examples</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_examples&amp;diff=1443"/>
		<updated>2021-05-14T08:49:53Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducing the aggregation framework==&lt;br /&gt;
These examples introduce the aggregation framework and its operators. Again we will be using the &#039;&#039;&#039;world&#039;&#039;&#039; collection.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$group&#039;&#039;&#039; allows you to collect group items that share common features&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the continents&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {_id: &amp;quot;$continent&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$match&#039;&#039;&#039; performs queries in a similar way to &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show all the details for France&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: &amp;quot;France&amp;quot;}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:&amp;quot;France&amp;quot;}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&#039;&#039;&#039;$limit&#039;&#039;&#039; sets the amount of documents to be handed to the next stage in the pipeline.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Return the first document&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$limit: 1}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$limit&amp;quot;:1}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$project&#039;&#039;&#039; selects what fields to display.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can also has the ability to create new fields and to compare fields against each other without using &#039;&#039;&#039;$where&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name and population density of all Asian countries. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
Note that &amp;quot;density&amp;quot; is a new field made from the result of dividing two existing fields, and that &#039;&#039;&#039;$divide&#039;&#039;&#039; is an aggregate function.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Dealing with division by 0&amp;quot;&amp;gt;&lt;br /&gt;
To avoid diving by 0 insert a &#039;&#039;&#039;$match&#039;&#039;&#039; to remove any countries with no area (Vatican City), then pipe these results through to &#039;&#039;&#039;$project&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
There is no need to check if values are &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;null&amp;lt;/syntaxhighlight&amp;gt;, MongoDB will ignore these documents.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Because aggregate is a pipeline stages may be repeated, and stages don&#039;t have to be used in a specific order.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of Asian countries with a density that&#039;s over 500 people per km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. (population/area)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
   {$match: {area: {$ne: 0}, continent: &amp;quot;Asia&amp;quot;}},&lt;br /&gt;
   {$project: {&lt;br /&gt;
       _id: 0,&lt;br /&gt;
       name: 1,&lt;br /&gt;
       density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
   }},&lt;br /&gt;
   {$match: {density: {$gt: 500}}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0},&amp;quot;continent&amp;quot;:&amp;quot;Asia&amp;quot;}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}},{&amp;quot;$match&amp;quot;:{&amp;quot;density&amp;quot;:{&amp;quot;$gt&amp;quot;:500}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$sort&#039;&#039;&#039; allows ordering of the results set, where 1 is ascending and -1 is descending.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that not including &#039;&#039;&#039;$match&#039;&#039;&#039; is the same as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;{&amp;quot;$match&amp;quot;:{}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the name of all countries in descending order.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {&amp;quot;$project&amp;quot;:{&lt;br /&gt;
        &amp;quot;_id&amp;quot;:0,&lt;br /&gt;
        &amp;quot;name&amp;quot;:1,&lt;br /&gt;
    }},&lt;br /&gt;
    {&amp;quot;$sort&amp;quot;:{&lt;br /&gt;
        &amp;quot;name&amp;quot;:-1&lt;br /&gt;
    }}  &lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,}},{&amp;quot;$sort&amp;quot;:{&amp;quot;name&amp;quot;:-1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grouping==&lt;br /&gt;
Grouping provides accumulator operations such as &#039;&#039;&#039;$sum&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
All groups must have an &#039;&#039;&#039;_id&#039;&#039;&#039;. To see why this is useful imagine the following:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So far you&#039;ve been using the &#039;&#039;&#039;world&#039;&#039;&#039; collection&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
As every country has a continent, it would make sense to have countries as a nested document inside continents: e.g:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[    &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Africa&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;,    ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Angola&amp;quot;,      &amp;quot;capital&amp;quot;: &amp;quot;Luanda&amp;quot;,     ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Benin&amp;quot;,       &amp;quot;capital&amp;quot;: &amp;quot;Porto-Novo&amp;quot;, ...}.&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Asia&amp;quot;,&lt;br /&gt;
     &amp;quot;countries&amp;quot;: [&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,  ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Azerbaijan&amp;quot;,  &amp;quot;capital&amp;quot;: &amp;quot;Baku&amp;quot;,   ...},&lt;br /&gt;
         {&amp;quot;name&amp;quot;: &amp;quot;Bahrain&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Manama&amp;quot;, ...},&lt;br /&gt;
         {...},&lt;br /&gt;
         ...&lt;br /&gt;
    ]},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;world&#039;&#039;&#039; collection isn&#039;t like this however. It uses the following structure, which has a redundancy where &#039;&#039;&#039;continent&#039;&#039;&#039; is repeated for each country.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[ &lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Afghanistan&amp;quot;, &amp;quot;capital&amp;quot;: &amp;quot;Kabul&amp;quot;,   &amp;quot;continent&amp;quot;: &amp;quot;Asia&amp;quot;,   ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Albania&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Tirana&amp;quot;,  &amp;quot;continent&amp;quot;: &amp;quot;Europe&amp;quot;,  ...},&lt;br /&gt;
    {&amp;quot;name&amp;quot;: &amp;quot;Algeria&amp;quot;,     &amp;quot;capital&amp;quot;: &amp;quot;Algiers&amp;quot;, &amp;quot;contiennt&amp;quot;: &amp;quot;Africa&amp;quot;, ...},&lt;br /&gt;
    {...},&lt;br /&gt;
    ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code to group by continent is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt; &lt;br /&gt;
If instead the question was to group by country the code would be &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
To operate over the whole document (which would have the same effect as &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;$name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;) &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: &amp;quot;null&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; or &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;_id&amp;quot;: None&amp;lt;/syntaxhighlight&amp;gt; can be used.&lt;br /&gt;
==group operators==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;$max&#039;&#039;&#039; and &#039;&#039;&#039;$min&#039;&#039;&#039; can be used to get the largest and smallest values in a group.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Get the smallest and largest GDPs of each continent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &#039;$continent&#039;,&lt;br /&gt;
        min: {$min: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        max: {$max: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        min: 1,&lt;br /&gt;
        max: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&#039;_id&#039;:&#039;$continent&#039;,&#039;min&#039;:{&amp;quot;$min&amp;quot;:&amp;quot;$gdp&amp;quot;},&#039;max&#039;:{&amp;quot;$max&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;min&amp;quot;:1,&amp;quot;max&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Some other useful aggregate functions to know are &#039;&#039;&#039;$sum&#039;&#039;&#039; and average: &#039;&#039;&#039;$avg&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
The example below  combines previous example material.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Order the continents in descending order by total GDP, Include the average GDP for each country.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {}},&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id:&amp;quot;$continent&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: {&amp;quot;$sum&amp;quot;: &amp;quot;$gdp&amp;quot;},&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: {&amp;quot;$avg&amp;quot;: &amp;quot;$gdp&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;:-1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        &amp;quot;Area&amp;quot;: &amp;quot;$_id&amp;quot;,&lt;br /&gt;
        &amp;quot;Total GDP&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;Average GDP&amp;quot;: 1,&lt;br /&gt;
        _id: 0&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;Total GDP&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$gdp&amp;quot;},&amp;quot;Average GDP&amp;quot;:{&amp;quot;$avg&amp;quot;:&amp;quot;$gdp&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;Total GDP&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;Area&amp;quot;:&amp;quot;$_id&amp;quot;,&amp;quot;Total GDP&amp;quot;:1,&amp;quot;Average GDP&amp;quot;:1,&amp;quot;_id&amp;quot;:0}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Using Conditions&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;$cond&#039;&#039;&#039; is similar to a &#039;&#039;&#039;CASE&#039;&#039;&#039; statement in other languages.&amp;lt;br/&amp;gt;&lt;br /&gt;
It has the form &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;&amp;quot;$cond&amp;quot;: [{&amp;lt;comparison&amp;gt;: [&amp;lt;field or value&amp;gt;, &amp;lt;field or value&amp;gt;]}, &amp;lt;true case&amp;gt;, &amp;lt;false case&amp;gt;]&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: {&lt;br /&gt;
            $cond: [{&amp;quot;$eq&amp;quot;: [&amp;quot;$continent&amp;quot;, &amp;quot;Eurasia&amp;quot;]}, &amp;quot;Europe&amp;quot;, &amp;quot;$continent&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Movies_Tutorial&amp;diff=1442</id>
		<title>AGGREGATE Movies Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Movies_Tutorial&amp;diff=1442"/>
		<updated>2021-03-31T22:58:15Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Casablanca */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Investigating the Movie Database==&lt;br /&gt;
The movie database includes thousands of movies with documents such as:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
     &amp;quot;_id&amp;quot; : 10522,&lt;br /&gt;
     &amp;quot;title&amp;quot; : &amp;quot;Alien&amp;quot;,&lt;br /&gt;
     &amp;quot;yr&amp;quot; : 1979,&lt;br /&gt;
     &amp;quot;director&amp;quot; : &amp;quot;Ridley Scott&amp;quot;,&lt;br /&gt;
     &amp;quot;budget&amp;quot; : 11000000,&lt;br /&gt;
     &amp;quot;gross&amp;quot; : 104931801,&lt;br /&gt;
     &amp;quot;cast&amp;quot; : [&lt;br /&gt;
         &amp;quot;Tom Skerritt&amp;quot;,&lt;br /&gt;
         &amp;quot;Sigourney Weaver&amp;quot;,&lt;br /&gt;
         &amp;quot;Veronica Cartwright&amp;quot;,&lt;br /&gt;
         &amp;quot;Harry Dean Stanton&amp;quot;,&lt;br /&gt;
         &amp;quot;John Hurt&amp;quot;,&lt;br /&gt;
         &amp;quot;Ian Holm&amp;quot;,&lt;br /&gt;
         &amp;quot;Yaphet Kotto&amp;quot;&lt;br /&gt;
     ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Casablanca==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the details of the movie Casablanca.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.movies.aggregate([{&lt;br /&gt;
    $match: {&lt;br /&gt;
        title: &#039;Alien&#039;&lt;br /&gt;
    }&lt;br /&gt;
}]).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.movies.aggregate([{$match:{title:&#039;Casablanca&#039;}}]).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tom Hanks==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use the match operator on listed items like cast. As there is an index on cast these queries operate quickly and do not have to scan the entire collection.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the title and year of the 10 most recent Tom Hanks movies - show the most recent first.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.movies.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        cast: &#039;Harrison Ford&#039;&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {_id: 0, title: 1}}&lt;br /&gt;
]).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;db.movies.aggregate([{$match:{cast:&#039;Tom Hanks&#039;}},{$project:{title:1,yr:1,_id:0}},{$sort:{yr:-1}},{$limit:10}]).pretty()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Brad and George==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;Show the movies that included Brad Pitt and George Clooney. Give the title and year ordered by year&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.movies.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        cast: &#039;Harrison Ford&#039;&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {_id: 0, title: 1}}&lt;br /&gt;
]).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;db.movies.aggregate([{$match:{cast:&#039;Brad Pitt&#039;}},{$match:{cast:&#039;George Clooney&#039;}},{$project:{_id:0,title:1,yr:1}},{$sort:{yr:1}}]).pretty()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Dark Years==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
A &amp;quot;Dark Year&amp;quot; is one in which &#039;&#039;&#039;Jack Black&#039;&#039;&#039; made more than two movies.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;List the years in which Jack Black made three or more movies.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot;&amp;gt;&lt;br /&gt;
One way to do this is to set up an aggregate pipeline with the following stages. You can build up to your answer by completing each stage in turn:&lt;br /&gt;
*Use &#039;&#039;&#039;$match&#039;&#039;&#039; to select the &#039;&#039;&#039;Jack Black&#039;&#039;&#039; movies - this will include howlers such as &amp;quot;&#039;&#039;&#039;Anchorman: The Legend of Ron Burgundy&#039;&#039;&#039;&amp;quot; (2004) and &amp;quot;&#039;&#039;&#039;School of Rock&#039;&#039;&#039;&amp;quot; (2003).&lt;br /&gt;
*Use &#039;&#039;&#039;$group&#039;&#039;&#039; together with &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;$sum: 1&amp;lt;/syntaxhighlight&amp;gt; to get the years together with a count, you will have to name the count field&lt;br /&gt;
*Use &#039;&#039;&#039;$match&#039;&#039;&#039; to get those where the count is &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;$gte: 3&amp;lt;/syntaxhighlight&amp;gt;.&lt;br /&gt;
*Use &#039;&#039;&#039;$project&#039;&#039;&#039; to extract the year only.&lt;br /&gt;
*Use &#039;&#039;&#039;$sort&#039;&#039;&#039; to get the output in ascending order.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.movies.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        cast: &#039;Harrison Ford&#039;&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {_id: 0, title: 1}}&lt;br /&gt;
]).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.movies.aggregate([{$match:{cast:&#039;Jack Black&#039;}},{$group:{_id:&#039;$yr&#039;,num:{$sum:1}}},{$match:{num:{$gte:3}}},{$project:{_id:1}},{$sort:{_id:1}}]).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1441</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1441"/>
		<updated>2021-03-31T22:53:37Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Messing with continent names 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group&amp;lt;/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as &amp;lt;code&amp;gt;$sum&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$min&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$max&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sample code shows the total population of each continent.&lt;br /&gt;
&amp;lt;div class=&#039;imper&#039;&amp;gt;Show the number of countries in each continent.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: &#039;$population&#039;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Country populations by order of magnitude==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the number of countries in each order.&lt;br /&gt;
&lt;br /&gt;
For example UK has a population of 64,105,700 so it belongs in the 10,000,000 bucket.&lt;br /&gt;
&lt;br /&gt;
You will need the functions $floor, $log10 and $pow&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([&lt;br /&gt;
    {$project: {name:1,l10:{$pow:[10,{$floor:{$log10:&amp;quot;$population&amp;quot;}}]}}},&lt;br /&gt;
    {$group:{_id:&amp;quot;$l10&amp;quot;,c:{$sum:1}}},&lt;br /&gt;
    {$sort:{_id:1}}&lt;br /&gt;
]);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1440</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1440"/>
		<updated>2021-03-31T22:53:21Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Messing with continent names 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group&amp;lt;/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as &amp;lt;code&amp;gt;$sum&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$min&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$max&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sample code shows the total population of each continent.&lt;br /&gt;
&amp;lt;div class=&#039;imper&#039;&amp;gt;Show the number of countries in each continent.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: &#039;$population&#039;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Country populations by order of magnitude==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the number of countries in each order.&lt;br /&gt;
&lt;br /&gt;
For example UK has a population of 64,105,700 so it belongs in the 10,000,000 bucket.&lt;br /&gt;
&lt;br /&gt;
You will need the functions $floor, $log10 and $pow&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([&lt;br /&gt;
    {$project: {name:1,l10:{$pow:[10,{$floor:{$log10:&amp;quot;$population&amp;quot;}}]}}},&lt;br /&gt;
    {$group:{_id:&amp;quot;$l10&amp;quot;,c:{$sum:1}}},&lt;br /&gt;
    {$sort:{_id:1}}&lt;br /&gt;
]);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1439</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1439"/>
		<updated>2021-03-31T22:38:48Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Messing with continent names 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group&amp;lt;/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as &amp;lt;code&amp;gt;$sum&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$min&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$max&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sample code shows the total population of each continent.&lt;br /&gt;
&amp;lt;div class=&#039;imper&#039;&amp;gt;Show the number of countries in each continent.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: &#039;$population&#039;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Country populations by order of magnitude==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the number of countries in each order.&lt;br /&gt;
&lt;br /&gt;
For example UK has a population of 64,105,700 so it belongs in the 10,000,000 bucket.&lt;br /&gt;
&lt;br /&gt;
You will need the functions $floor, $log10 and $pow&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([&lt;br /&gt;
    {$project: {name:1,l10:{$pow:[10,{$floor:{$log10:&amp;quot;$population&amp;quot;}}]}}},&lt;br /&gt;
    {$group:{_id:&amp;quot;$l10&amp;quot;,c:{$sum:1}}},&lt;br /&gt;
    {$sort:{_id:1}}&lt;br /&gt;
]);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 3==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; but:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;Europe&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Asia&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt; - for each country in &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Only show countries beginning with &amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
If you&#039;re struggling you may want to experiment with &amp;lt;code&amp;gt;$and&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;$or&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$regex:&amp;quot;^A|^B&amp;quot;}}},{$project:{_id:0,name:1,continent:{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Europe&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Asia&amp;quot;]}]},&amp;quot;Eurasia&amp;quot;,{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]}]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1438</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1438"/>
		<updated>2021-03-31T22:02:34Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Messing with continent names 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group&amp;lt;/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as &amp;lt;code&amp;gt;$sum&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$min&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$max&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sample code shows the total population of each continent.&lt;br /&gt;
&amp;lt;div class=&#039;imper&#039;&amp;gt;Show the number of countries in each continent.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: &#039;$population&#039;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 2==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; for countries beginning with N - but replace the continent &amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$regex&amp;quot;:&amp;quot;^N&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:2,&amp;quot;continent&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,&amp;quot;$continent&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 3==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; but:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;Europe&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Asia&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt; - for each country in &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Only show countries beginning with &amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
If you&#039;re struggling you may want to experiment with &amp;lt;code&amp;gt;$and&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;$or&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$regex:&amp;quot;^A|^B&amp;quot;}}},{$project:{_id:0,name:1,continent:{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Europe&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Asia&amp;quot;]}]},&amp;quot;Eurasia&amp;quot;,{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]}]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1437</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1437"/>
		<updated>2021-03-31T22:02:05Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Messing with continent names 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group&amp;lt;/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as &amp;lt;code&amp;gt;$sum&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$min&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$max&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sample code shows the total population of each continent.&lt;br /&gt;
&amp;lt;div class=&#039;imper&#039;&amp;gt;Show the number of countries in each continent.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: &#039;$population&#039;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 2==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; for countries beginning with N - but replace the continent &amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$regex&amp;quot;:&amp;quot;^N&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:2,&amp;quot;continent&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,&amp;quot;$continent&amp;quot;]}}}]) ; &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 3==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; but:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;Europe&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Asia&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt; - for each country in &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Only show countries beginning with &amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
If you&#039;re struggling you may want to experiment with &amp;lt;code&amp;gt;$and&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;$or&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$regex:&amp;quot;^A|^B&amp;quot;}}},{$project:{_id:0,name:1,continent:{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Europe&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Asia&amp;quot;]}]},&amp;quot;Eurasia&amp;quot;,{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]}]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1436</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1436"/>
		<updated>2021-03-31T21:57:34Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group&amp;lt;/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as &amp;lt;code&amp;gt;$sum&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$min&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$max&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sample code shows the total population of each continent.&lt;br /&gt;
&amp;lt;div class=&#039;imper&#039;&amp;gt;Show the number of countries in each continent.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: &#039;$population&#039;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 2==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; for countries beginning with N - but replace the continent &amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$regex&amp;quot;:&amp;quot;^N&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;continent&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,&amp;quot;$continent&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 3==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; but:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;Europe&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Asia&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt; - for each country in &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Only show countries beginning with &amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
If you&#039;re struggling you may want to experiment with &amp;lt;code&amp;gt;$and&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;$or&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$regex:&amp;quot;^A|^B&amp;quot;}}},{$project:{_id:0,name:1,continent:{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Europe&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Asia&amp;quot;]}]},&amp;quot;Eurasia&amp;quot;,{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]}]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1435</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1435"/>
		<updated>2020-12-11T19:34:50Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* $group on continent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group&amp;lt;/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as &amp;lt;code&amp;gt;$sum&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$min&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$max&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sample code shows the total population of each continent.&lt;br /&gt;
&amp;lt;div class=&#039;imper&#039;&amp;gt;Show the number of countries in each continent.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: &#039;$population&#039;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;$continent&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 2==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; for countries beginning with N - but replace the continent &amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$regex&amp;quot;:&amp;quot;^N&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;continent&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,&amp;quot;$continent&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 3==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; but:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;Europe&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Asia&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt; - for each country in &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Only show countries beginning with &amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
If you&#039;re struggling you may want to experiment with &amp;lt;code&amp;gt;$and&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;$or&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$regex:&amp;quot;^A|^B&amp;quot;}}},{$project:{_id:0,name:1,continent:{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Europe&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Asia&amp;quot;]}]},&amp;quot;Eurasia&amp;quot;,{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]}]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1434</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1434"/>
		<updated>2020-12-11T19:33:58Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* $group on continent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group&amp;lt;/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as &amp;lt;code&amp;gt;$sum&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$min&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$max&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;$push&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sample code shows the total population of each continent.&lt;br /&gt;
&amp;lt;div class=&#039;imper&#039;&amp;gt;Show the number of countries in each continent.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;world&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;world&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 2==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; for countries beginning with N - but replace the continent &amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$regex&amp;quot;:&amp;quot;^N&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;continent&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,&amp;quot;$continent&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 3==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; but:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;Europe&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Asia&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt; - for each country in &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Only show countries beginning with &amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
If you&#039;re struggling you may want to experiment with &amp;lt;code&amp;gt;$and&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;$or&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$regex:&amp;quot;^A|^B&amp;quot;}}},{$project:{_id:0,name:1,continent:{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Europe&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Asia&amp;quot;]}]},&amp;quot;Eurasia&amp;quot;,{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]}]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1433</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1433"/>
		<updated>2020-12-11T19:30:51Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group&amp;lt;/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as $sum $min $max $push&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;world&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 2==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; for countries beginning with N - but replace the continent &amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$regex&amp;quot;:&amp;quot;^N&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;continent&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,&amp;quot;$continent&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 3==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; but:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;Europe&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Asia&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt; - for each country in &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Only show countries beginning with &amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
If you&#039;re struggling you may want to experiment with &amp;lt;code&amp;gt;$and&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;$or&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$regex:&amp;quot;^A|^B&amp;quot;}}},{$project:{_id:0,name:1,continent:{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Europe&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Asia&amp;quot;]}]},&amp;quot;Eurasia&amp;quot;,{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]}]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1432</id>
		<title>FIND Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1432"/>
		<updated>2020-12-11T19:29:59Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working with the &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt; collection of countries==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  This tutorial introduces NoSQL using MongoDB. We will be using the &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
  command and comparison functions on the collection &#039;&#039;&#039;world&#039;&#039;&#039; which contains details of around 250 countries of the world:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
[[FIND examples]] are available.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Show Germany==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt; to show the details of Germany.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Show Germany instead of France.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;France&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;});  &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eurasia==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;.pretty()&amp;lt;/syntaxhighlight&amp;gt; to make the output more readable.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List all the countries in the continent of &amp;quot;Eurasia&amp;quot;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({continent: &amp;quot;Eurasia&amp;quot;}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Find an area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can test numbers as well as strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the country with an area of exactly 43094.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({gdp: 3425956000000}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({area: 43094}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $gt==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &#039;&#039;&#039;$gt&#039;&#039;&#039; (greater than) and &#039;&#039;&#039;$lt&#039;&#039;&#039; (less than) to compare numbers and strings.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
  Show each country with a population of over 250000000 &amp;lt;br/&amp;gt;&lt;br /&gt;
  Sort the results alphabetically.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will need to use a [[FIND_Examples#Using_a_projection_with_find|projection]] to answer this question.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {area: {$gt: 9000000}},&lt;br /&gt;
  {name: 1, _id: 0}&lt;br /&gt;
).sort(&lt;br /&gt;
  {name: 1}&lt;br /&gt;
).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:250000000}},{name:1,_id:0}).sort({name: 1}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==After S==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Greater than and less than comparisons can also be applied to strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List the countries that come after &amp;quot;S&amp;quot; in the alphabet.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name:{$gt:&amp;quot;S&amp;quot;}},{name:1,_id:0}).pretty();  &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Name and Capital==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the name and capital cities for countries with a population of over 70 million.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:70000000}},{name:1,capital:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $or==&lt;br /&gt;
&amp;lt;div class=q data-lang=mongo&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the countries that have a population that is over 200 million or less than 20,000.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {$or: [&lt;br /&gt;
    {name: &#039;Germany&#039;},&lt;br /&gt;
    {name: &#039;France&#039;}&lt;br /&gt;
  ]},&lt;br /&gt;
  {name: 1, population: 1, _id: 0}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({$or:[{population:{$gt:200000000}},{population:{$lt:20000}}]},{name:1,population:1,_id:0})&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1431</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1431"/>
		<updated>2020-12-11T19:25:50Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* $group on continent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group&amp;lt;/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as $sum $min $max $push&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;world&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 2==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; for countries beginning with N - but replace the continent &amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$regex&amp;quot;:&amp;quot;^N&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;continent&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,&amp;quot;$continent&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 3==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; but:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;Europe&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Asia&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt; - for each country in &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Only show countries beginning with &amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
If you&#039;re struggling you may want to experiment with &amp;lt;code&amp;gt;$and&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;$or&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$regex:&amp;quot;^A|^B&amp;quot;}}},{$project:{_id:0,name:1,continent:{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Europe&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Asia&amp;quot;]}]},&amp;quot;Eurasia&amp;quot;,{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]}]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1430</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1430"/>
		<updated>2020-12-11T19:25:32Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* =$group on continent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as $sum $min $max $push&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;world&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 2==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; for countries beginning with N - but replace the continent &amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$regex&amp;quot;:&amp;quot;^N&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;continent&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,&amp;quot;$continent&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 3==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; but:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;Europe&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Asia&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt; - for each country in &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Only show countries beginning with &amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
If you&#039;re struggling you may want to experiment with &amp;lt;code&amp;gt;$and&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;$or&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$regex:&amp;quot;^A|^B&amp;quot;}}},{$project:{_id:0,name:1,continent:{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Europe&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Asia&amp;quot;]}]},&amp;quot;Eurasia&amp;quot;,{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]}]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1429</id>
		<title>AGGREGATE Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=AGGREGATE_Tutorial&amp;diff=1429"/>
		<updated>2020-12-11T19:24:52Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Per Capita GDP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Country Profile==&lt;br /&gt;
For these questions you should use &amp;lt;code&amp;gt;aggregate([])&amp;lt;/code&amp;gt; on the collection &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may find these [[AGGREGATE examples]] useful.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==$group on continent=&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
The aggregate method allows a &amp;lt;code&amp;gt;$group/code&amp;gt; - you must specify the &amp;lt;code&amp;gt;_id&amp;lt;/code&amp;gt; and you can use aggregating functions such as $sum $min $max $push&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate({&lt;br /&gt;
  $group: {&lt;br /&gt;
    _id: &#039;world&#039;,&lt;br /&gt;
    res: {&lt;br /&gt;
      $sum: 1&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Per Capita GDP==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;per capita GDP&amp;lt;/code&amp;gt; for those countries with a &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; of at least 200 million.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate per capita GDP&amp;quot;&amp;gt;&lt;br /&gt;
per capita GDP is the GDP divided by the population.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        population: {$gte: 250000000}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        &amp;quot;per capita GDP&amp;quot;: {$divide: [&#039;$gdp&#039;, 1000000]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;population&amp;quot;:{&amp;quot;$gte&amp;quot;:200000000}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;per capita GDP&amp;quot;: {&amp;quot;$divide&amp;quot;: [&amp;quot;$gdp&amp;quot;,&amp;quot;$population&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population Density in South America==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries in South America.&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;How to calculate population density&amp;quot;&amp;gt;&lt;br /&gt;
population density is the population divided by the area&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;{&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {continent: &#039;Asia&#039;}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        density: {$divide: [&amp;quot;$population&amp;quot;, &amp;quot;$area&amp;quot;]}&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{continent:&#039;South America&#039;}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population Density for &amp;quot;V&amp;quot;==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Give the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; of all countries with name after V in the alphabet.&lt;br /&gt;
&amp;lt;p&amp;gt;Note that because Vatican City (with area 0) is in Europe you will get a divide by zero error unless you filter first.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hint&amp;quot; title=&amp;quot;Division by 0 error?&amp;quot;&amp;gt;&lt;br /&gt;
Use a &amp;lt;code&amp;gt;$match&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  $match: {&lt;br /&gt;
    area: {&lt;br /&gt;
      &amp;quot;$ne&amp;quot;: 0&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {name: {$gt: &#039;V&#039;}}},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$gt:&#039;V&#039;}}},{$match:{area:{&amp;quot;$ne&amp;quot;:0}}},{$project:{_id:0,name:1,density:{$divide:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Population in millions==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population&amp;lt;/code&amp;gt; in millions for the countries of the continent &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;. Divide the population by 1000000 to get population in millions. &lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;continent&amp;quot;:{&amp;quot;$eq&amp;quot;:&amp;quot;South America&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,1000000]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Population density==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;population density&amp;lt;/code&amp;gt; for &amp;lt;b&amp;gt;France&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;Germany&amp;lt;/b&amp;gt;, and &amp;lt;b&amp;gt;Italy&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match:{&lt;br /&gt;
        name: {$in: [&#039;United Kingdom&#039;, &#039;United States&#039;, &#039;Brazil&#039;]},&lt;br /&gt;
        population: {$ne: null},&lt;br /&gt;
        area: {$ne: 0}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project:{&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$in&amp;quot;:[&#039;France&#039;,&#039;Germany&#039;,&#039;Italy&#039;]},&amp;quot;population&amp;quot;:{&amp;quot;$ne&amp;quot;:null},&amp;quot;area&amp;quot;:{&amp;quot;$ne&amp;quot;:0}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;population density&amp;quot;:{&amp;quot;$divide&amp;quot;:[&amp;quot;$population&amp;quot;,&amp;quot;$area&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Continents by area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Order the &amp;lt;code&amp;gt;continents&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; from most to least.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$group: {&lt;br /&gt;
        _id: &amp;quot;$name&amp;quot;,&lt;br /&gt;
        area: {$max: &amp;quot;$area&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$sort: {&lt;br /&gt;
        area: -1&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 1,&lt;br /&gt;
        area: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Big Continents==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the only two continents with total area greater than 25000000 and then sort from largest to smallest.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$match: {&lt;br /&gt;
      continent: &amp;quot;North America&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$project: {&lt;br /&gt;
      _id: 0,&lt;br /&gt;
      name: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:&amp;quot;$continent&amp;quot;,area:{$sum:&amp;quot;$area&amp;quot;}}},{$sort:{area:-1}},{$match:{area:{$gt:25000000}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==First and last country by continent==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
For each continent show the first and last country alphabetically like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Africa&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Algeria&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Zimbabwe&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Asia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Afghanistan&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Yemen&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Caribbean&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Antigua and Barbuda&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Trinidad and Tobago&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Eurasia&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Armenia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Russia&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Europe&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Albania&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vatican City&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;North America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Belize&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;United States&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Oceania&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Australia&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Vanuatu&amp;quot; }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;South America&amp;quot;, &amp;quot;from&amp;quot; : &amp;quot;Argentina&amp;quot;, &amp;quot;to&amp;quot; : &amp;quot;Venezuela&amp;quot; }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
      _id: &amp;quot;$continent&amp;quot;&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {&lt;br /&gt;
      _id: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$sort:{name:1}},{$group:{_id:&#039;$continent&#039;,from:{$first:&#039;$name&#039;},to:{$last:&#039;$name&#039;}},},{$sort:{_id:1}}])&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Countries beginning with...==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Group countries according to the first letter of the name. As shown.&lt;br /&gt;
Only give &amp;quot;U&amp;quot; through to &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to use the &#039;&#039;&#039;$substr&#039;&#039;&#039; function and the &#039;&#039;&#039;$push&#039;&#039;&#039; aggregate function.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;U&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Uganda&amp;quot;, &amp;quot;Ukraine&amp;quot;, &amp;quot;United Arab Emirates&amp;quot;, &amp;quot;United Kingdom&amp;quot;, &amp;quot;United States&amp;quot;, &amp;quot;Uruguay&amp;quot;, &amp;quot;Uzbekistan&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;V&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Vanuatu&amp;quot;, &amp;quot;Vatican City&amp;quot;, &amp;quot;Venezuela&amp;quot;, &amp;quot;Vietnam&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Y&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Yemen&amp;quot; ] }&lt;br /&gt;
 { &amp;quot;_id&amp;quot; : &amp;quot;Z&amp;quot;, &amp;quot;list&amp;quot; : [ &amp;quot;Zambia&amp;quot;, &amp;quot;Zimbabwe&amp;quot; ] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: &#039;$name&#039;,&lt;br /&gt;
    startsWith: {$substr: [&#039;$name&#039;, 0, 1]}&lt;br /&gt;
  }},&lt;br /&gt;
  {$match: {&lt;br /&gt;
    _id: {$gte: &#039;U&#039;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {_id: 1}}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$group:{_id:{$substr:[&#039;$name&#039;,0,1]},list:{$push:&#039;$name&#039;}}},{$match:{_id:{$gte:&#039;U&#039;}}},{$sort:{_id:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Harder Questions==&lt;br /&gt;
==Messing with continent names==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Combine &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt;, and then list the continents by area. Biggest first.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
  {$group: {&lt;br /&gt;
    _id: {&lt;br /&gt;
      $cond: [&lt;br /&gt;
        {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;North America&amp;quot;]},&lt;br /&gt;
        &amp;quot;America&amp;quot;,&lt;br /&gt;
        {$cond: [&lt;br /&gt;
          {$eq: [&amp;quot;$continent&amp;quot;, &amp;quot;Asia&amp;quot;]},&lt;br /&gt;
          &amp;quot;The East&amp;quot;,&lt;br /&gt;
          &amp;quot;$continent&amp;quot;&lt;br /&gt;
        ]}&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    area: {$sum: &amp;quot;$area&amp;quot;}&lt;br /&gt;
  }},&lt;br /&gt;
  {$sort: {area: -1}},&lt;br /&gt;
  {$project: {&lt;br /&gt;
    _id: 1,&lt;br /&gt;
    area: 1&lt;br /&gt;
  }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$group&amp;quot;:{&amp;quot;_id&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},&amp;quot;America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]},&amp;quot;area&amp;quot;:{&amp;quot;$sum&amp;quot;:&amp;quot;$area&amp;quot;}}},{&amp;quot;$sort&amp;quot;:{&amp;quot;area&amp;quot;:-1}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:1,&amp;quot;area&amp;quot;:1}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 2==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; for countries beginning with N - but replace the continent &amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.aggregate([&lt;br /&gt;
    {$match: {&lt;br /&gt;
        name: {$regex: &amp;quot;^N&amp;quot;}&lt;br /&gt;
    }},&lt;br /&gt;
    {$project: {&lt;br /&gt;
        _id: 0,&lt;br /&gt;
        name: 1&lt;br /&gt;
    }}&lt;br /&gt;
]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$match&amp;quot;:{&amp;quot;name&amp;quot;:{&amp;quot;$regex&amp;quot;:&amp;quot;^N&amp;quot;}}},{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;continent&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,&amp;quot;$continent&amp;quot;]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 3==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Show the &amp;lt;b&amp;gt;name&amp;lt;/b&amp;gt; and the &amp;lt;b&amp;gt;continent&amp;lt;/b&amp;gt; but:&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; for &amp;lt;b&amp;gt;Europe&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Asia&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
*substitute &amp;lt;b&amp;gt;America&amp;lt;/b&amp;gt; - for each country in &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;Only show countries beginning with &amp;lt;b&amp;gt;A&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
If you&#039;re struggling you may want to experiment with &amp;lt;code&amp;gt;$and&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;$or&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{$match:{name:{$regex:&amp;quot;^A|^B&amp;quot;}}},{$project:{_id:0,name:1,continent:{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Europe&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Asia&amp;quot;]}]},&amp;quot;Eurasia&amp;quot;,{$cond:[{$or:[{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;North America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;South America&amp;quot;]},{$eq:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]}]},&amp;quot;America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Messing with continent names 4==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Put the continents right...&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Oceania&amp;lt;/b&amp;gt; becomes &amp;lt;b&amp;gt;Australasia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*Countries in &amp;lt;b&amp;gt;Eurasia&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Turkey&amp;lt;/b&amp;gt; go to &amp;lt;b&amp;gt;Europe/Asia&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Caribbean&amp;lt;/b&amp;gt; islands starting with &#039;&amp;lt;b&amp;gt;B&amp;lt;/b&amp;gt;&#039; go to &amp;lt;b&amp;gt;North America&amp;lt;/b&amp;gt;, other Caribbean islands go to &amp;lt;b&amp;gt;South America&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Show the name, the original continent and the new continent of all countries.&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.aggregate([{&amp;quot;$project&amp;quot;:{&amp;quot;_id&amp;quot;:0,&amp;quot;name&amp;quot;:1,&amp;quot;original&amp;quot;:&amp;quot;$continent&amp;quot;,&amp;quot;new&amp;quot;:{&amp;quot;$cond&amp;quot;:[{&amp;quot;$or&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Eurasia&amp;quot;]},{&amp;quot;$eq&amp;quot;:[&amp;quot;$name&amp;quot;,&amp;quot;Turkey&amp;quot;]}]},&amp;quot;Europe/Asia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Oceania&amp;quot;]},&amp;quot;Australasia&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$eq&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;North America&amp;quot;,{&amp;quot;$cond&amp;quot;:[{&amp;quot;$and&amp;quot;:[{&amp;quot;$eq&amp;quot;:[&amp;quot;$continent&amp;quot;,&amp;quot;Caribbean&amp;quot;]},{&amp;quot;$ne&amp;quot;:[{&amp;quot;$substr&amp;quot;:[&amp;quot;$name&amp;quot;,0,1]},&amp;quot;B&amp;quot;]}]},&amp;quot;South America&amp;quot;,&amp;quot;$continent&amp;quot;]}]}]}]}}}]);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1428</id>
		<title>FIND Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1428"/>
		<updated>2020-11-21T19:56:45Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Show Germany */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working with the &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt; collection of countries==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  This tutorial introduces NoSQL using MongoDB. We will be using the &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
  command and comparison functions on the collection &#039;&#039;&#039;world&#039;&#039;&#039; which contains details of around 250 countries of the world:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
[[FIND examples]] are available.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Show Germany==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt; to show the details of Germany.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Show Germany instead of France.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;France&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;});  &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eurasia==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;.pretty()&amp;lt;/syntaxhighlight&amp;gt; to make the output more readable.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List all the countries in the continent of &amp;quot;Eurasia&amp;quot;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({continent: &amp;quot;Eurasia&amp;quot;}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Find an area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can test numbers as well as strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the country with an area of exactly 43094.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({gdp: 3425956000000}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({area: 43094}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $gt==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &#039;&#039;&#039;$gt&#039;&#039;&#039; (greater than) and &#039;&#039;&#039;$lt&#039;&#039;&#039; (less than) to compare numbers and strings.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
  Show each country with a population of over 250000000 &amp;lt;br/&amp;gt;&lt;br /&gt;
  Sort the results alphabetically.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will need to use a [[FIND_Examples#Using_a_projection_with_find|projection]] to answer this question.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {area: {$gt: 9000000}},&lt;br /&gt;
  {name: 1, _id: 0}&lt;br /&gt;
).sort(&lt;br /&gt;
  {name: 1}&lt;br /&gt;
).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:250000000}},{name:1,_id:0}).sort({name: 1}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==After S==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Greater than and less than comparisons can also be applied to strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List the countries that come after &amp;quot;S&amp;quot; in the alphabet.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name:{$gt:&amp;quot;S&amp;quot;}},{name:1,_id:0}).pretty();  &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Name and Capital==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the name and capital cities for countries with a population of over 70 million.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:70000000}},{name:1,capital:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $or==&lt;br /&gt;
&amp;lt;div class=q data-lang=mongo&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the countries that have a population that is over 200 million or less than 20,000.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {$or: [&lt;br /&gt;
    {name: &#039;Germany&#039;},&lt;br /&gt;
    {name: &#039;France&#039;}&lt;br /&gt;
  ]},&lt;br /&gt;
  {name: 1, population: 1, _id: 0}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({$or:[{population:{$gt:200000000}},{population:{$lt:20000}}]},{name:1,population:1,_id:0})&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1427</id>
		<title>FIND Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1427"/>
		<updated>2020-11-21T19:56:22Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Show Germany */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working with the &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt; collection of countries==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  This tutorial introduces NoSQL using MongoDB. We will be using the &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
  command and comparison functions on the collection &#039;&#039;&#039;world&#039;&#039;&#039; which contains details of around 250 countries of the world:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
[[FIND examples]] are available.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Show Germany==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt; to show the details of Germany.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Show Germany instead of France.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;France&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eurasia==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;.pretty()&amp;lt;/syntaxhighlight&amp;gt; to make the output more readable.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List all the countries in the continent of &amp;quot;Eurasia&amp;quot;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({continent: &amp;quot;Eurasia&amp;quot;}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Find an area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can test numbers as well as strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the country with an area of exactly 43094.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({gdp: 3425956000000}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({area: 43094}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $gt==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &#039;&#039;&#039;$gt&#039;&#039;&#039; (greater than) and &#039;&#039;&#039;$lt&#039;&#039;&#039; (less than) to compare numbers and strings.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
  Show each country with a population of over 250000000 &amp;lt;br/&amp;gt;&lt;br /&gt;
  Sort the results alphabetically.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will need to use a [[FIND_Examples#Using_a_projection_with_find|projection]] to answer this question.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {area: {$gt: 9000000}},&lt;br /&gt;
  {name: 1, _id: 0}&lt;br /&gt;
).sort(&lt;br /&gt;
  {name: 1}&lt;br /&gt;
).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:250000000}},{name:1,_id:0}).sort({name: 1}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==After S==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Greater than and less than comparisons can also be applied to strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List the countries that come after &amp;quot;S&amp;quot; in the alphabet.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name:{$gt:&amp;quot;S&amp;quot;}},{name:1,_id:0}).pretty();  &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Name and Capital==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the name and capital cities for countries with a population of over 70 million.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:70000000}},{name:1,capital:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $or==&lt;br /&gt;
&amp;lt;div class=q data-lang=mongo&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the countries that have a population that is over 200 million or less than 20,000.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {$or: [&lt;br /&gt;
    {name: &#039;Germany&#039;},&lt;br /&gt;
    {name: &#039;France&#039;}&lt;br /&gt;
  ]},&lt;br /&gt;
  {name: 1, population: 1, _id: 0}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({$or:[{population:{$gt:200000000}},{population:{$lt:20000}}]},{name:1,population:1,_id:0})&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1426</id>
		<title>FIND Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1426"/>
		<updated>2020-11-21T19:51:19Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* After S */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working with the &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt; collection of countries==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  This tutorial introduces NoSQL using MongoDB. We will be using the &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
  command and comparison functions on the collection &#039;&#039;&#039;world&#039;&#039;&#039; which contains details of around 250 countries of the world:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
[[FIND examples]] are available.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Show Germany==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt; to show the details of Germany.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Show Germany instead of France.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;France&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eurasia==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;.pretty()&amp;lt;/syntaxhighlight&amp;gt; to make the output more readable.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List all the countries in the continent of &amp;quot;Eurasia&amp;quot;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({continent: &amp;quot;Eurasia&amp;quot;}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Find an area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can test numbers as well as strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the country with an area of exactly 43094.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({gdp: 3425956000000}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({area: 43094}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $gt==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &#039;&#039;&#039;$gt&#039;&#039;&#039; (greater than) and &#039;&#039;&#039;$lt&#039;&#039;&#039; (less than) to compare numbers and strings.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
  Show each country with a population of over 250000000 &amp;lt;br/&amp;gt;&lt;br /&gt;
  Sort the results alphabetically.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will need to use a [[FIND_Examples#Using_a_projection_with_find|projection]] to answer this question.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {area: {$gt: 9000000}},&lt;br /&gt;
  {name: 1, _id: 0}&lt;br /&gt;
).sort(&lt;br /&gt;
  {name: 1}&lt;br /&gt;
).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:250000000}},{name:1,_id:0}).sort({name: 1}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==After S==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Greater than and less than comparisons can also be applied to strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List the countries that come after &amp;quot;S&amp;quot; in the alphabet.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name:{$gt:&amp;quot;S&amp;quot;}},{name:1,_id:0}).pretty();  &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Name and Capital==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the name and capital cities for countries with a population of over 70 million.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:70000000}},{name:1,capital:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $or==&lt;br /&gt;
&amp;lt;div class=q data-lang=mongo&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the countries that have a population that is over 200 million or less than 20,000.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {$or: [&lt;br /&gt;
    {name: &#039;Germany&#039;},&lt;br /&gt;
    {name: &#039;France&#039;}&lt;br /&gt;
  ]},&lt;br /&gt;
  {name: 1, population: 1, _id: 0}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({$or:[{population:{$gt:200000000}},{population:{$lt:20000}}]},{name:1,population:1,_id:0})&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1425</id>
		<title>FIND Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1425"/>
		<updated>2020-11-21T19:45:57Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Find an area */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working with the &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt; collection of countries==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  This tutorial introduces NoSQL using MongoDB. We will be using the &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
  command and comparison functions on the collection &#039;&#039;&#039;world&#039;&#039;&#039; which contains details of around 250 countries of the world:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
[[FIND examples]] are available.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Show Germany==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt; to show the details of Germany.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Show Germany instead of France.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;France&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eurasia==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;.pretty()&amp;lt;/syntaxhighlight&amp;gt; to make the output more readable.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List all the countries in the continent of &amp;quot;Eurasia&amp;quot;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({continent: &amp;quot;Eurasia&amp;quot;}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Find an area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can test numbers as well as strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the country with an area of exactly 43094.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({gdp: 3425956000000}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({area: 43094}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $gt==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &#039;&#039;&#039;$gt&#039;&#039;&#039; (greater than) and &#039;&#039;&#039;$lt&#039;&#039;&#039; (less than) to compare numbers and strings.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
  Show each country with a population of over 250000000 &amp;lt;br/&amp;gt;&lt;br /&gt;
  Sort the results alphabetically.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will need to use a [[FIND_Examples#Using_a_projection_with_find|projection]] to answer this question.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {area: {$gt: 9000000}},&lt;br /&gt;
  {name: 1, _id: 0}&lt;br /&gt;
).sort(&lt;br /&gt;
  {name: 1}&lt;br /&gt;
).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:250000000}},{name:1,_id:0}).sort({name: 1}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==After S==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Greater than and less than comparisons can also be applied to strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List the countries that come after &amp;quot;S&amp;quot; in the alphabet.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name:{$gt:&amp;quot;S&amp;quot;}},{name:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Name and Capital==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the name and capital cities for countries with a population of over 70 million.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:70000000}},{name:1,capital:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $or==&lt;br /&gt;
&amp;lt;div class=q data-lang=mongo&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the countries that have a population that is over 200 million or less than 20,000.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {$or: [&lt;br /&gt;
    {name: &#039;Germany&#039;},&lt;br /&gt;
    {name: &#039;France&#039;}&lt;br /&gt;
  ]},&lt;br /&gt;
  {name: 1, population: 1, _id: 0}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({$or:[{population:{$gt:200000000}},{population:{$lt:20000}}]},{name:1,population:1,_id:0})&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1424</id>
		<title>FIND Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1424"/>
		<updated>2020-11-21T19:45:05Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Eurasia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working with the &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt; collection of countries==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  This tutorial introduces NoSQL using MongoDB. We will be using the &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
  command and comparison functions on the collection &#039;&#039;&#039;world&#039;&#039;&#039; which contains details of around 250 countries of the world:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
[[FIND examples]] are available.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Show Germany==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt; to show the details of Germany.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Show Germany instead of France.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;France&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eurasia==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;.pretty()&amp;lt;/syntaxhighlight&amp;gt; to make the output more readable.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List all the countries in the continent of &amp;quot;Eurasia&amp;quot;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({continent: &amp;quot;Eurasia&amp;quot;}).pretty(); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Find an area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can test numbers as well as strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the country with an area of exactly 43094.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({gdp: 3425956000000}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({area: 43094}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $gt==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &#039;&#039;&#039;$gt&#039;&#039;&#039; (greater than) and &#039;&#039;&#039;$lt&#039;&#039;&#039; (less than) to compare numbers and strings.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
  Show each country with a population of over 250000000 &amp;lt;br/&amp;gt;&lt;br /&gt;
  Sort the results alphabetically.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will need to use a [[FIND_Examples#Using_a_projection_with_find|projection]] to answer this question.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {area: {$gt: 9000000}},&lt;br /&gt;
  {name: 1, _id: 0}&lt;br /&gt;
).sort(&lt;br /&gt;
  {name: 1}&lt;br /&gt;
).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:250000000}},{name:1,_id:0}).sort({name: 1}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==After S==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Greater than and less than comparisons can also be applied to strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List the countries that come after &amp;quot;S&amp;quot; in the alphabet.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name:{$gt:&amp;quot;S&amp;quot;}},{name:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Name and Capital==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the name and capital cities for countries with a population of over 70 million.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:70000000}},{name:1,capital:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $or==&lt;br /&gt;
&amp;lt;div class=q data-lang=mongo&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the countries that have a population that is over 200 million or less than 20,000.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {$or: [&lt;br /&gt;
    {name: &#039;Germany&#039;},&lt;br /&gt;
    {name: &#039;France&#039;}&lt;br /&gt;
  ]},&lt;br /&gt;
  {name: 1, population: 1, _id: 0}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({$or:[{population:{$gt:200000000}},{population:{$lt:20000}}]},{name:1,population:1,_id:0})&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1423</id>
		<title>FIND Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1423"/>
		<updated>2020-11-21T19:44:13Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Show Germany */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working with the &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt; collection of countries==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  This tutorial introduces NoSQL using MongoDB. We will be using the &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
  command and comparison functions on the collection &#039;&#039;&#039;world&#039;&#039;&#039; which contains details of around 250 countries of the world:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
[[FIND examples]] are available.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Show Germany==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt; to show the details of Germany.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Show Germany instead of France.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;France&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}); &amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eurasia==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;.pretty()&amp;lt;/syntaxhighlight&amp;gt; to make the output more readable.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List all the countries in the continent of &amp;quot;Eurasia&amp;quot;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({continent: &amp;quot;Eurasia&amp;quot;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Find an area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can test numbers as well as strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the country with an area of exactly 43094.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({gdp: 3425956000000}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({area: 43094}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $gt==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &#039;&#039;&#039;$gt&#039;&#039;&#039; (greater than) and &#039;&#039;&#039;$lt&#039;&#039;&#039; (less than) to compare numbers and strings.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
  Show each country with a population of over 250000000 &amp;lt;br/&amp;gt;&lt;br /&gt;
  Sort the results alphabetically.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will need to use a [[FIND_Examples#Using_a_projection_with_find|projection]] to answer this question.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {area: {$gt: 9000000}},&lt;br /&gt;
  {name: 1, _id: 0}&lt;br /&gt;
).sort(&lt;br /&gt;
  {name: 1}&lt;br /&gt;
).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:250000000}},{name:1,_id:0}).sort({name: 1}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==After S==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Greater than and less than comparisons can also be applied to strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List the countries that come after &amp;quot;S&amp;quot; in the alphabet.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name:{$gt:&amp;quot;S&amp;quot;}},{name:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Name and Capital==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the name and capital cities for countries with a population of over 70 million.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:70000000}},{name:1,capital:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $or==&lt;br /&gt;
&amp;lt;div class=q data-lang=mongo&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the countries that have a population that is over 200 million or less than 20,000.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {$or: [&lt;br /&gt;
    {name: &#039;Germany&#039;},&lt;br /&gt;
    {name: &#039;France&#039;}&lt;br /&gt;
  ]},&lt;br /&gt;
  {name: 1, population: 1, _id: 0}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({$or:[{population:{$gt:200000000}},{population:{$lt:20000}}]},{name:1,population:1,_id:0})&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.js&amp;diff=1422</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.js&amp;diff=1422"/>
		<updated>2020-10-25T15:23:04Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;function linkScript() {&lt;br /&gt;
    /* poor man&#039;s autoloader */&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    Array.prototype.slice.call(arguments, 0).forEach(function (a) {&lt;br /&gt;
        var x = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
        x.async = false;&lt;br /&gt;
        x.src = &amp;quot;/mw/scripts/&amp;quot; + a + &amp;quot;.js&amp;quot;;&lt;br /&gt;
        document.head.appendChild(x);&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(function () {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    //CodeMirror.&lt;br /&gt;
    var cmVersion = &amp;quot;codemirror-5.49.2/&amp;quot;;&lt;br /&gt;
    linkScript(&lt;br /&gt;
        &amp;quot;jshint-2.10.2-min&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;lib/codemirror&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;mode/javascript/javascript&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;mode/cypher/cypher&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/display/fullscreen&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/display/rulers&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/edit/closebrackets&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/edit/matchbrackets&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/fold/foldcode&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/fold/foldgutter&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/fold/brace-fold&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/hint/show-hint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/lint/lint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/lint/javascript-lint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/lint/json-lint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/edit/trailingspace&amp;quot;&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    //Question-related scripts.&lt;br /&gt;
    linkScript(&amp;quot;nosqlzoo&amp;quot;, &amp;quot;beautify&amp;quot;, &amp;quot;validator&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    //Google Analytics&lt;br /&gt;
    var tag_manager = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
    tag_manager.async = true;&lt;br /&gt;
    tag_manager.src = &amp;quot;https://www.googletagmanager.com/gtag/js?id=UA-120387375-1&amp;quot;;&lt;br /&gt;
    document.head.appendChild(tag_manager);&lt;br /&gt;
&lt;br /&gt;
    var google = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
    google.src = &amp;quot;/mw/scripts/google.js&amp;quot;;&lt;br /&gt;
    document.head.appendChild(google);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.js&amp;diff=1421</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.js&amp;diff=1421"/>
		<updated>2020-10-25T15:19:33Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.js&amp;diff=1420</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.js&amp;diff=1420"/>
		<updated>2020-10-25T13:18:31Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;function linkScript() {&lt;br /&gt;
    /* poor man&#039;s autoloader */&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    Array.prototype.slice.call(arguments, 0).forEach(function (a) {&lt;br /&gt;
        var x = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
        x.async = false;&lt;br /&gt;
        x.src = &amp;quot;/mw/scripts/&amp;quot; + a + &amp;quot;.js&amp;quot;;&lt;br /&gt;
        document.head.appendChild(x);&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(function () {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    //CodeMirror.&lt;br /&gt;
    var cmVersion = &amp;quot;codemirror-5.49.2/&amp;quot;;&lt;br /&gt;
    linkScript(&lt;br /&gt;
        &amp;quot;jshint-2.10.2-min&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;lib/codemirror&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;mode/javascript/javascript&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;mode/cypher/cypher&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/display/fullscreen&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/display/rulers&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/edit/closebrackets&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/edit/matchbrackets&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/fold/foldcode&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/fold/foldgutter&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/fold/brace-fold&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/hint/show-hint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/lint/lint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/lint/javascript-lint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/lint/json-lint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/edit/trailingspace&amp;quot;&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    //Question-related scripts.&lt;br /&gt;
    linkScript(&amp;quot;nosqlzoo&amp;quot;, &amp;quot;beautify&amp;quot;, &amp;quot;validator&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    //Google Analytics&lt;br /&gt;
    var tag_manager = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
    tag_manager.async = true;&lt;br /&gt;
    tag_manager.src = &amp;quot;https://www.googletagmanager.com/gtag/js?id=UA-120387375-1&amp;quot;;&lt;br /&gt;
    document.head.appendChild(tag_manager);&lt;br /&gt;
&lt;br /&gt;
    var google = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
    google.src = &amp;quot;/mw/scripts/google.js&amp;quot;;&lt;br /&gt;
    document.head.appendChild(google);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.js&amp;diff=1419</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=MediaWiki:Common.js&amp;diff=1419"/>
		<updated>2020-10-25T10:50:04Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;function linkScript() {&lt;br /&gt;
    /* poor man&#039;s autoloader */&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    Array.prototype.slice.call(arguments, 0).forEach(function (a) {&lt;br /&gt;
        var x = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
        x.async = false;&lt;br /&gt;
        x.src = &amp;quot;/mw/scripts/&amp;quot; + a + &amp;quot;.js&amp;quot;;&lt;br /&gt;
        document.head.appendChild(x);&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(function () {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    //CodeMirror.&lt;br /&gt;
    var cmVersion = &amp;quot;codemirror-5.49.2/&amp;quot;;&lt;br /&gt;
    var CodeMirrorConfig = { expr: 1 };&lt;br /&gt;
    linkScript(&lt;br /&gt;
        &amp;quot;jshint-2.10.2-min&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;lib/codemirror&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;mode/javascript/javascript&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;mode/cypher/cypher&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/display/fullscreen&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/display/rulers&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/edit/closebrackets&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/edit/matchbrackets&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/fold/foldcode&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/fold/foldgutter&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/fold/brace-fold&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/hint/show-hint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/lint/lint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/lint/javascript-lint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/lint/json-lint&amp;quot;,&lt;br /&gt;
        cmVersion + &amp;quot;addon/edit/trailingspace&amp;quot;&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    //Question-related scripts.&lt;br /&gt;
    linkScript(&amp;quot;nosqlzoo&amp;quot;, &amp;quot;beautify&amp;quot;, &amp;quot;validator&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    //Google Analytics&lt;br /&gt;
    var tag_manager = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
    tag_manager.async = true;&lt;br /&gt;
    tag_manager.src = &amp;quot;https://www.googletagmanager.com/gtag/js?id=UA-120387375-1&amp;quot;;&lt;br /&gt;
    document.head.appendChild(tag_manager);&lt;br /&gt;
&lt;br /&gt;
    var google = document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
    google.src = &amp;quot;/mw/scripts/google.js&amp;quot;;&lt;br /&gt;
    document.head.appendChild(google);&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=NoSQL_Zoo&amp;diff=1418</id>
		<title>NoSQL Zoo</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=NoSQL_Zoo&amp;diff=1418"/>
		<updated>2020-07-24T16:42:12Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn NoSQL using MongoDB.&lt;br /&gt;
&amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  What is the capital of France?&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne({name: &amp;quot;France&amp;quot;}).capital;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{TopTenTips}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;min-height:25em&amp;quot;&amp;gt;&lt;br /&gt;
==Tutorials: Learn NoSQL in stages==&lt;br /&gt;
&lt;br /&gt;
===MongoDB===&lt;br /&gt;
; 1 [[FIND Tutorial|FIND Tutorial]]:Using Find.&lt;br /&gt;
; 2 [[AGGREGATE Tutorial|AGGREGATE Tutorial]]:In which we query the world collection and make use of aggregate functions. (extra: [[AGGREGATE Movies Tutorial|AGGREGATE Movies Tutorial]])&lt;br /&gt;
; 3 [[MAPREDUCE Tutorial]]:Using MapReduce.&lt;br /&gt;
; 4 [[MAPREDUCE Elite]]:MapReduce questions using the Elite Dangerous dataset.&lt;br /&gt;
; 5 [https://goo.gl/forms/ep8rBbCQSa381ic82 Survey]:Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;br /&gt;
===Neo4j===&lt;br /&gt;
; 1 [[Space_Race/MATCH_Tutorial|MATCH Tutorial]]: Using MATCH&lt;br /&gt;
; 2 [[Space_Race/Relationships_Tutorial|Relationships Tutorial]]: Understanding Relationships&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reference: How to...==&lt;br /&gt;
; [[AGGREGATE examples | AGGREGATE Examples]]&lt;br /&gt;
; [[Find|FIND]]&lt;br /&gt;
; [[FIND Examples]]&lt;br /&gt;
; [[JavaScript: Fundamentals]]&lt;br /&gt;
; [[JavaScript: Computed Properties]]&lt;br /&gt;
; [[MapReduce | MAPREDUCE]]&lt;br /&gt;
; [[Elite Document Structure|NOSQLZOO: &#039;elite&#039; dataset schema]]&lt;br /&gt;
; [[RegEx Pattern Matching]]&lt;br /&gt;
&lt;br /&gt;
==MongoDB resources==&lt;br /&gt;
;Manuals: [http://docs.mongodb.org/manual/ MongoDB Documentation] [https://github.com/mongodb/docs MongoDB Documentation GitHub]&amp;lt;br/&amp;gt;[https://docs.python.org/3/ Python 3 Documentation] [http://api.mongodb.org/python/current/ PyMongo API Documentation]&amp;lt;br/&amp;gt; Karl Seguin&#039;s [http://openmymind.net/mongodb.pdf The Little MongoDB Book]&lt;br /&gt;
&lt;br /&gt;
{{Acknowledgements}}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=Space_Race&amp;diff=1363</id>
		<title>Space Race</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=Space_Race&amp;diff=1363"/>
		<updated>2019-10-13T13:50:11Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Learn how to use Neo4j using data from the Space Race. ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;neo4j&amp;quot;&amp;gt;&lt;br /&gt;
  Use &amp;lt;code&amp;gt;MATCH&amp;lt;/code&amp;gt; to show the roles of Hades rather than Apollo&lt;br /&gt;
  &amp;lt;p class=&#039;strong&#039;&amp;gt;Show Hades instead of Apollo&amp;lt;p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;MATCH(n:God{name:&#039;Apollo&#039;}) RETURN n.roles;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;MATCH(n:God{name:&#039;Hades&#039;}) RETURN n.roles; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Acknowledgements}}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=Space_Race&amp;diff=1362</id>
		<title>Space Race</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=Space_Race&amp;diff=1362"/>
		<updated>2019-10-13T13:49:07Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Learn how to use neo4j using data from the space race. ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;neo4j&amp;quot;&amp;gt;&lt;br /&gt;
  Use &amp;lt;code&amp;gt;MATCH&amp;lt;/code&amp;gt; to show the roles of Hades rather than Apollo&lt;br /&gt;
  &amp;lt;p class=&#039;strong&#039;&amp;gt;Show Hades instead of Apollo&amp;lt;p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;MATCH(n:God{name:&#039;Apollo&#039;}) RETURN n.roles;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;MATCH(n:God{name:&#039;Hades&#039;}) RETURN n.roles; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Acknowledgements}}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=Space_Race&amp;diff=1360</id>
		<title>Space Race</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=Space_Race&amp;diff=1360"/>
		<updated>2019-09-25T17:17:11Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn how to use neo4j using data from the space race.&lt;br /&gt;
&amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;neo4j&amp;quot;&amp;gt;&lt;br /&gt;
  When did Apollo 8 launch?&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;MATCH(n) RETURN n;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Acknowledgements}}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=Space_Race&amp;diff=1359</id>
		<title>Space Race</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=Space_Race&amp;diff=1359"/>
		<updated>2019-09-25T17:03:14Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: Created page with &amp;quot;Learn how to use neo4j using data from the space race. &amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;neo4j&amp;quot;&amp;gt;   When did Apollo 8 launch?   &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne({name: &amp;quot;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn how to use neo4j using data from the space race.&lt;br /&gt;
&amp;lt;div class=&amp;quot;q nonum&amp;quot; data-lang=&amp;quot;neo4j&amp;quot;&amp;gt;&lt;br /&gt;
  When did Apollo 8 launch?&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne({name: &amp;quot;France&amp;quot;}, {capital: 1});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Acknowledgements}}&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=User:Andr3w&amp;diff=1358</id>
		<title>User:Andr3w</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=User:Andr3w&amp;diff=1358"/>
		<updated>2019-09-25T09:02:00Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: Created page with &amp;quot;==Pages that control everything== *MediaWiki:Common.js *MediaWiki:Common.css *MediaWiki:Sidebar *Special:RecentChanges *Special:SpecialPages Language Tes...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Pages that control everything==&lt;br /&gt;
*[[MediaWiki:Common.js]]&lt;br /&gt;
*[[MediaWiki:Common.css]]&lt;br /&gt;
*[[MediaWiki:Sidebar]]&lt;br /&gt;
*[[Special:RecentChanges]]&lt;br /&gt;
*[[Special:SpecialPages]]&lt;br /&gt;
[[Language Test Page]]&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1357</id>
		<title>FIND Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1357"/>
		<updated>2019-09-25T08:58:35Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Using $gt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working with the &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt; collection of countries==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  This tutorial introduces NoSQL using MongoDB. We will be using the &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
  command and comparison functions on the collection &#039;&#039;&#039;world&#039;&#039;&#039; which contains details of around 250 countries of the world:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
[[FIND examples]] are available.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Show Germany==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt; to show the details of Germany.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Show Germany instead of France.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;France&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eurasia==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;.pretty()&amp;lt;/syntaxhighlight&amp;gt; to make the output more readable.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List all the countries in the continent of &amp;quot;Eurasia&amp;quot;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({continent: &amp;quot;Eurasia&amp;quot;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Find an area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can test numbers as well as strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the country with an area of exactly 43094.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({gdp: 3425956000000}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({area: 43094}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $gt==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &#039;&#039;&#039;$gt&#039;&#039;&#039; (greater than) and &#039;&#039;&#039;$lt&#039;&#039;&#039; (less than) to compare numbers and strings.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
  Show each country with a population of over 250000000 &amp;lt;br/&amp;gt;&lt;br /&gt;
  Sort the results alphabetically.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will need to use a [[FIND_Examples#Using_a_projection_with_find|projection]] to answer this question.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {area: {$gt: 9000000}},&lt;br /&gt;
  {name: 1, _id: 0}&lt;br /&gt;
).sort(&lt;br /&gt;
  {name: 1}&lt;br /&gt;
).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:250000000}},{name:1,_id:0}).sort({name: 1}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==After S==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Greater than and less than comparisons can also be applied to strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List the countries that come after &amp;quot;S&amp;quot; in the alphabet.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name:{$gt:&amp;quot;S&amp;quot;}},{name:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Name and Capital==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the name and capital cities for countries with a population of over 70 million.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:70000000}},{name:1,capital:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $or==&lt;br /&gt;
&amp;lt;div class=q data-lang=mongo&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the countries that have a population that is over 200 million or less than 20,000.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {$or: [&lt;br /&gt;
    {name: &#039;Germany&#039;},&lt;br /&gt;
    {name: &#039;France&#039;}&lt;br /&gt;
  ]},&lt;br /&gt;
  {name: 1, population: 1, _id: 0}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({$or:[{population:{$gt:200000000}},{population:{$lt:20000}}]},{name:1,population:1,_id:0})&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
	<entry>
		<id>https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1356</id>
		<title>FIND Tutorial</title>
		<link rel="alternate" type="text/html" href="https://nosqlzoo.net/w/index.php?title=FIND_Tutorial&amp;diff=1356"/>
		<updated>2019-09-25T08:58:19Z</updated>

		<summary type="html">&lt;p&gt;Andr3w: /* Using $gt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Working with the &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt; collection of countries==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  This tutorial introduces NoSQL using MongoDB. We will be using the &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
  command and comparison functions on the collection &#039;&#039;&#039;world&#039;&#039;&#039; which contains details of around 250 countries of the world:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
[[FIND examples]] are available.&lt;br /&gt;
&amp;lt;div class=&#039;extra_space&#039; style=&#039;width:1em; height:6em;&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Show Germany==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;find()&amp;lt;/syntaxhighlight&amp;gt; to show the details of Germany.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Show Germany instead of France.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;France&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;});&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eurasia==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot; inline&amp;gt;.pretty()&amp;lt;/syntaxhighlight&amp;gt; to make the output more readable.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List all the countries in the continent of &amp;quot;Eurasia&amp;quot;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name: &#039;Germany&#039;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({continent: &amp;quot;Eurasia&amp;quot;}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Find an area==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can test numbers as well as strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the country with an area of exactly 43094.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({gdp: 3425956000000}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({area: 43094}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $gt==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
You can use &#039;&#039;&#039;$gt&#039;&#039;&#039; (greater than) and &#039;&#039;&#039;$lt&#039;&#039;&#039; (less than) to compare numbers and strings.&lt;br /&gt;
&amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
  Show each country with a population of over 250000000 &amp;lt;br/&amp;gt;&lt;br /&gt;
  Sort the results alphabetically.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You will need to use a [[FIND_Examples#Using_a_projection_with_find projection]] to answer this question.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {area: {$gt: 9000000}},&lt;br /&gt;
  {name: 1, _id: 0}&lt;br /&gt;
).sort(&lt;br /&gt;
  {name: 1}&lt;br /&gt;
).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:250000000}},{name:1,_id:0}).sort({name: 1}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==After S==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
Greater than and less than comparisons can also be applied to strings.&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    List the countries that come after &amp;quot;S&amp;quot; in the alphabet.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({name:{$gt:&amp;quot;S&amp;quot;}},{name:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Name and Capital==&lt;br /&gt;
&amp;lt;div class=&amp;quot;q&amp;quot; data-lang=&amp;quot;mongo&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the name and capital cities for countries with a population of over 70 million.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.findOne();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({population:{$gt:70000000}},{name:1,capital:1,_id:0}).pretty();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using $or==&lt;br /&gt;
&amp;lt;div class=q data-lang=mongo&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
    Find the countries that have a population that is over 200 million or less than 20,000.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre class=&amp;quot;def&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
db.world.find(&lt;br /&gt;
  {$or: [&lt;br /&gt;
    {name: &#039;Germany&#039;},&lt;br /&gt;
    {name: &#039;France&#039;}&lt;br /&gt;
  ]},&lt;br /&gt;
  {name: 1, population: 1, _id: 0}&lt;br /&gt;
);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;ans&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;db.world.find({$or:[{population:{$gt:200000000}},{population:{$lt:20000}}]},{name:1,population:1,_id:0})&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://goo.gl/forms/ep8rBbCQSa381ic82 {{huge| Survey}}] &amp;lt;br/&amp;gt;&lt;br /&gt;
Do you have thoughts about this website that you would like to share? Help improve NoSQLZoo!&lt;/div&gt;</summary>
		<author><name>Andr3w</name></author>
	</entry>
</feed>