{"id":20677857,"url":"https://github.com/clivern/mongoplaybook","last_synced_at":"2026-04-17T16:31:34.481Z","repository":{"id":86321871,"uuid":"57889687","full_name":"Clivern/MongoPlaybook","owner":"Clivern","description":":books: It's worth to give it a try","archived":false,"fork":false,"pushed_at":"2024-02-29T20:27:25.000Z","size":11,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-31T06:46:54.033Z","etag":null,"topics":["database","mongo","mongodb","playbook","wiki"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Clivern.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-05-02T12:44:46.000Z","updated_at":"2019-07-13T22:15:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"8cc9a38d-1f6b-48fb-ac0a-e67475d993d2","html_url":"https://github.com/Clivern/MongoPlaybook","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Clivern/MongoPlaybook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FMongoPlaybook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FMongoPlaybook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FMongoPlaybook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FMongoPlaybook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Clivern","download_url":"https://codeload.github.com/Clivern/MongoPlaybook/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Clivern%2FMongoPlaybook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31936529,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T12:37:54.787Z","status":"ssl_error","status_checked_at":"2026-04-17T12:37:25.095Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","mongo","mongodb","playbook","wiki"],"created_at":"2024-11-16T21:17:19.769Z","updated_at":"2026-04-17T16:31:34.456Z","avatar_url":"https://github.com/Clivern.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## Run Mongo\n```\n\u003e mongo\n```\n\n## Import Collection\n```\n\u003e mongoimport --db test --collection restaurants --drop --file primer-dataset.json\n```\n## Show All Databases\n```\n\u003e show databases\n```\n\n## Get Current Database\n```\n\u003e db\n```\n\n## Use Another Database\n```\n\u003e use test\n```\n\n## Show Database Collections\n```\n\u003e show collections\n```\n\n## Datatypes\n```\n{'x': null} # null\n{'x': true} # Boolean\n{'x': 3} # Integer\n{'x': 3.2} # Float Point\n{'x': 'hello world'} # String\n{'x': new Date()} # Date\n{'x': /foobar/i} # Regex\n{'x': ['a','b','c']} # Array\n{'x': {'foo':'bar'}} # Embedded Documents\n{'x': ObjectId()} # Id\n```\n\n## Counting Collection Records\n```\n\u003e db.restaurants.count()\n25359\n```\n\n## Insert Record\n```\n\u003e db.posts.insert({'title': 'hello world', 'author': 5, 'created_at': new Date()})\nWriteResult({ \"nInserted\" : 1 })\n```\n\n## Batch Insert\n```\n\u003e db.posts.insert([{'title': 'hello world1', 'author': 6, 'created_at': new Date()}, {'title': 'hello world2', 'author': 7, 'created_at': new Date()}])\nBulkWriteResult({\n    \"writeErrors\" : [ ],\n    \"writeConcernErrors\" : [ ],\n    \"nInserted\" : 2,\n    \"nUpserted\" : 0,\n    \"nMatched\" : 0,\n    \"nModified\" : 0,\n    \"nRemoved\" : 0,\n    \"upserted\" : [ ]\n})\n```\n\n## Find All\n```\n\u003e db.posts.find()\n{ \"_id\" : ObjectId(\"571bde257c1d1340ef01c29f\"), \"title\" : \"hello world\", \"author\" : 5, \"created_at\" : ISODate(\"2016-04-23T20:42:13.971Z\") }\n{ \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"), \"title\" : \"hello world1\", \"author\" : 6, \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\") }\n{ \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a1\"), \"title\" : \"hello world2\", \"author\" : 7, \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\") }\n```\n\n## Remove With Query\n```\n\u003e db.posts.find()\n{ \"_id\" : ObjectId(\"571bde257c1d1340ef01c29f\"), \"title\" : \"hello world\", \"author\" : 5, \"created_at\" : ISODate(\"2016-04-23T20:42:13.971Z\") }\n{ \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"), \"title\" : \"hello world1\", \"author\" : 6, \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\") }\n{ \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a1\"), \"title\" : \"hello world2\", \"author\" : 7, \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\") }\n\u003e db.posts.remove({'title':'hello world'})\nWriteResult({ \"nRemoved\" : 1 })\n\u003e db.posts.find()\n{ \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"), \"title\" : \"hello world1\", \"author\" : 6, \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\") }\n{ \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a1\"), \"title\" : \"hello world2\", \"author\" : 7, \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\") }\n```\n\n## Find One\n```\n\u003e db.posts.findOne({'title':'hello world'})\nnull\n\u003e db.posts.findOne({'title':'hello world1'})\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"hello world1\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\")\n}\n```\n\n## Find All\n```\n\u003e db.posts.find()\n{ \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"), \"title\" : \"hello world1\", \"author\" : 6, \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\") }\n{ \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a1\"), \"title\" : \"hello world2\", \"author\" : 7, \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\") }\n\u003e db.posts.find({'author':6})\n{ \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"), \"title\" : \"hello world1\", \"author\" : 6, \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\") }\n```\n\n## Replace Document\n```\n\u003e post = db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"hello world1\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\")\n}\n\u003e post.title = \"new hello world\"\nnew hello world\n\u003e post\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\")\n}\n\u003e db.posts.update({'title': 'hello world1'}, post)\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\")\n}\n```\n\n## Using Modifiers\n\n### `$inc` Modifier\n\n```\n\u003e post = db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\")\n}\n\u003e post.views = 0\n0\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\")\n}\n\u003e db.posts.update({'title': 'new hello world'}, post)\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 0\n}\n\u003e db.posts.update({'title': 'new hello world'}, {'$inc':{'views': 1}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 1\n}\n\n\u003e db.posts.update({'title': 'new hello world'}, {'$inc':{'views': -1}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 0\n}\n\n\u003e db.posts.update({'title': 'new hello world'}, {'$inc':{'views': 50}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50\n}\n```\n\n### `$set` Modifier\n```\n\u003e db.posts.update({'title': 'new hello world'}, {'$set':{'comments': []}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 1,\n    \"comments\" : [ ]\n}\n```\n\n### `$unset` Modifier\n```\n\u003e db.posts.update({'title': 'new hello world'}, {'$unset':{'comments': 1}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 1\n}\n```\n\n### `$push` Modifier\n```\n\u003e db.posts.update({'title': 'new hello world'}, {'$set':{'comments': []}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [ ]\n}\n\u003e db.posts.update({'title': 'new hello world'}, {'$push':{'comments': {'author': 'hello@clivern.com', 'comment': 'bla bla bla', 'created_at': new Date()}}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello@clivern.com\",\n            \"comment\" : \"bla bla bla\",\n            \"created_at\" : ISODate(\"2016-04-23T21:27:51.863Z\")\n        }\n    ]\n}\n```\n\n### `$push` and `$each` Modifier\n```\n\u003e db.posts.update({'title': 'new hello world'}, {'$push':{'comments': {'$each':[{'author': 'hello1@clivern.com', 'comment': 'bla bla bla1', 'created_at': new Date()}, {'author': 'hello2@clivern.com', 'comment': 'bla bla bla2', 'created_at': new Date()}, {'author': 'hello@clivern.com3', 'comment': 'bla bla bla3', 'created_at': new Date()}]}}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello@clivern.com\",\n            \"comment\" : \"bla bla bla\",\n            \"created_at\" : ISODate(\"2016-04-23T21:27:51.863Z\")\n        },\n        {\n            \"author\" : \"hello1@clivern.com\",\n            \"comment\" : \"bla bla bla1\",\n            \"created_at\" : ISODate(\"2016-04-23T21:30:21.597Z\")\n        },\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:30:21.597Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:30:21.597Z\")\n        }\n    ]\n}\n```\n\n### `$push`, `$each` and `$slice` Modifier\n```\n\u003e db.posts.update({'title': 'new hello world'}, {'$push':{'comments': {'$each':[{'author': 'hello1@clivern.com', 'comment': 'bla bla bla1', 'created_at': new Date()}, {'author': 'hello2@clivern.com', 'comment': 'bla bla bla2', 'created_at': new Date()}, {'author': 'hello@clivern.com3', 'comment': 'bla bla bla3', 'created_at': new Date()}]}}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello@clivern.com\",\n            \"comment\" : \"bla bla bla\",\n            \"created_at\" : ISODate(\"2016-04-23T21:27:51.863Z\")\n        },\n        {\n            \"author\" : \"hello1@clivern.com\",\n            \"comment\" : \"bla bla bla1\",\n            \"created_at\" : ISODate(\"2016-04-23T21:30:21.597Z\")\n        },\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:30:21.597Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:30:21.597Z\")\n        }\n    ]\n}\n\u003e db.posts.update({'title': 'new hello world'}, {'$push':{'comments': {'$each':[{'author': 'hello1@clivern.com', 'comment': 'bla bla bla1', 'created_at': new Date()}, {'author': 'hello2@clivern.com', 'comment': 'bla bla bla2', 'created_at': new Date()}, {'author': 'hello@clivern.com3', 'comment': 'bla bla bla3', 'created_at': new Date()}], '$slice': -4}}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:30:21.597Z\")\n        },\n        {\n            \"author\" : \"hello1@clivern.com\",\n            \"comment\" : \"bla bla bla1\",\n            \"created_at\" : ISODate(\"2016-04-23T21:33:50.653Z\")\n        },\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:33:50.653Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:33:50.653Z\")\n        }\n    ]\n}\n```\n\n### `$push`, `$each`, `$slice` and `$sort` Modifier\n```\n\u003e db.posts.update({'title': 'new hello world'}, {'$push':{'comments': {'$each':[{'author': 'hello1@clivern.com', 'comment': 'bla bla bla1', 'created_at': new Date()}, {'author': 'hello2@clivern.com', 'comment': 'bla bla bla2', 'created_at': new Date()}, {'author': 'hello@clivern.com3', 'comment': 'bla bla bla3', 'created_at': new Date()}], '$slice': -4}}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:35:56.109Z\")\n        },\n        {\n            \"author\" : \"hello1@clivern.com\",\n            \"comment\" : \"bla bla bla1\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        }\n    ]\n}\n\u003e db.posts.update({'title': 'new hello world'}, {'$push':{'comments': {'$each':[{'author': 'hello1@clivern.com', 'comment': 'bla bla bla1', 'created_at': new Date()}, {'author': 'hello2@clivern.com', 'comment': 'bla bla bla2', 'created_at': new Date()}, {'author': 'hello@clivern.com3', 'comment': 'bla bla bla3', 'created_at': new Date()}], '$slice': -4, '$sort': {'author': 1}}}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:35:56.109Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        }\n    ]\n}\n```\n\n### `$addToSet` Modifier\n```\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:35:56.109Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        }\n    ]\n}\n\u003e db.posts.update({'title': 'new hello world'}, {'$set':{'tags':['php']}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:35:56.109Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        }\n    ],\n    \"tags\" : [\n        \"php\"\n    ]\n}\n\u003e db.posts.update({'title': 'new hello world'}, {'$addToSet':{'tags':'php'}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 0 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:35:56.109Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        }\n    ],\n    \"tags\" : [\n        \"php\"\n    ]\n}\n\u003e db.posts.update({'title': 'new hello world'}, {'$addToSet':{'tags':'jQuery'}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:35:56.109Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        }\n    ],\n    \"tags\" : [\n        \"php\",\n        \"jQuery\"\n    ]\n}\n```\n\n### `$pull` Modifier\n```\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:35:56.109Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        }\n    ],\n    \"tags\" : [\n        \"php\",\n        \"jQuery\"\n    ]\n}\n\u003e db.posts.update({'title': 'new hello world'}, {'$pull':{'tags':'jQuery'}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:35:56.109Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        }\n    ],\n    \"tags\" : [\n        \"php\"\n    ]\n}\n```\n\n### Positional Edits\n```\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:35:56.109Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        }\n    ],\n    \"tags\" : [\n        \"php\"\n    ]\n}\n\u003e db.posts.update({'title': 'new hello world'}, {'$set':{'comments.0.votes':20}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.posts.findOne()\n{\n    \"_id\" : ObjectId(\"571bdf367c1d1340ef01c2a0\"),\n    \"title\" : \"new hello world\",\n    \"author\" : 6,\n    \"created_at\" : ISODate(\"2016-04-23T20:46:46.132Z\"),\n    \"views\" : 50,\n    \"comments\" : [\n        {\n            \"author\" : \"hello2@clivern.com\",\n            \"comment\" : \"bla bla bla2\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\"),\n            \"votes\" : 20\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:35:56.109Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:12.697Z\")\n        },\n        {\n            \"author\" : \"hello@clivern.com3\",\n            \"comment\" : \"bla bla bla3\",\n            \"created_at\" : ISODate(\"2016-04-23T21:36:21.669Z\")\n        }\n    ],\n    \"tags\" : [\n        \"php\"\n    ]\n}\n```\n\n### Update With Upsert is `True`\n```\n\u003e db.posts.update({'title': 'new world with upsert'}, {'$set':{'comments':[]}}, true)\nWriteResult({\n    \"nMatched\" : 0,\n    \"nUpserted\" : 1,\n    \"nModified\" : 0,\n    \"_id\" : ObjectId(\"571bed5c9c6a01cfb58206e8\")\n})\n\u003e db.posts.findOne({'title': 'new world with upsert'})\n{\n    \"_id\" : ObjectId(\"571bed5c9c6a01cfb58206e8\"),\n    \"title\" : \"new world with upsert\",\n    \"comments\" : [ ]\n}\n\n\u003e db.posts.update({'title': 'new world with upsert'}, {'$setOnInsert':{'comments':[]}}, true)\nWriteResult({\n    \"nMatched\" : 0,\n    \"nUpserted\" : 1,\n    \"nModified\" : 0,\n    \"_id\" : ObjectId(\"571bed5c9c6a01cfb58206e8\")\n})\n\u003e db.posts.findOne({'title': 'new world with upsert'})\n{\n    \"_id\" : ObjectId(\"571bed5c9c6a01cfb58206e8\"),\n    \"title\" : \"new world with upsert\",\n    \"comments\" : [ ]\n}\n```\n\n## Remove All Documents in Collection\n```\n\u003e db.posts.remove({})\nWriteResult({ \"nRemoved\" : 5 })\n```\n\n\n## Querying\n\n### Bulk Insert\n```\n\u003e db.users.insert([{'_id': 1, 'first_name': 'Mark', 'last_name': 'Doe', 'username': 'admin', 'email': 'admin@clivern.com', 'job_title': 'CEO', 'created_at': new Date(), 'updated_at': new Date()}, {'_id': 2, 'first_name': 'Selena', 'last_name': 'Gomez', 'username': 'selena', 'email': 'selena@clivern.com', 'job_title': 'Backend Developer', 'created_at': new Date(), 'updated_at': new Date()}, {'_id': 3, 'first_name': 'Helen', 'last_name': 'Otal', 'username': 'helen', 'email': 'helen@clivern.com', 'job_title': 'Web Designer', 'created_at': new Date(), 'updated_at': new Date()}, {'_id': 4, 'first_name': 'Joe', 'last_name': 'Mar', 'username': 'joe', 'email': 'joe@clivern.com', 'job_title': 'Support Agent', 'created_at': new Date(), 'updated_at': new Date()}])\nBulkWriteResult({\n    \"writeErrors\" : [ ],\n    \"writeConcernErrors\" : [ ],\n    \"nInserted\" : 4,\n    \"nUpserted\" : 0,\n    \"nMatched\" : 0,\n    \"nModified\" : 0,\n    \"nRemoved\" : 0,\n    \"upserted\" : [ ]\n})\n```\n\n### Find All\n```\n\u003e db.users.find({}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\")\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\")\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\")\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\")\n}\n```\n\n### Exclude Keys\n```\n\u003e db.users.find({}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\"\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\"\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\"\n}\n```\n\n### Query Conditionals\n```\n\u003e db.users.find({'username': 'admin'}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n\n\u003e db.users.find({'_id': {'$gt': 2}}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\"\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\"\n}\n\n\u003e db.users.find({'_id': {'$gte': 2}}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\"\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\"\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\"\n}\n\n\u003e db.users.find({'_id': {'$lt': 2}}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n\n\u003e db.users.find({'_id': {'$lte': 2}}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\"\n}\n\n\u003e db.users.find({'_id': {'$ne': 2}}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\"\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\"\n}\n\n\u003e db.users.find({'created_at': {'$gt': new Date()}}, {'created_at': 0, 'updated_at': 0}).pretty()\n\u003e db.users.find({'created_at': {'$lt': new Date()}}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\"\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\"\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\"\n}\n\n\u003e db.users.find({'_id': {'$in': [1, 2]}}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\"\n}\n\n\u003e db.users.find({'_id': {'$nin': [1, 2]}}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\"\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\"\n}\n\n\u003e db.users.find({'$or': [{'first_name': 'Helen' }, {'first_name': 'Selena'}]}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\"\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\"\n}\n\n\u003e db.users.find({'$and': [{'first_name': 'Helen' }, {'first_name': 'Selena'}]}, {'created_at': 0, 'updated_at': 0}).pretty()\n\u003e db.users.find({'$and': [{'first_name': 'Helen' }, {'last_name': 'Otal'}]}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\"\n}\n\n\u003e db.users.find({'votes': null}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\"\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\"\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\"\n}\n\n\u003e db.users.find({'votes': {'$exists': true}}, {'created_at': 0, 'updated_at': 0}).pretty()\n\u003e db.users.find({'votes': {'$exists': false}}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\"\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\"\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\"\n}\n\n\u003e db.users.find({'first_name': /mark/i}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n\u003e db.users.find({'first_name': /mar/i}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n\n\u003e db.users.find({'first_name': /^mar$/i}, {'created_at': 0, 'updated_at': 0}).pretty()\n\u003e db.users.find({'first_name': /^mark$/i}, {'created_at': 0, 'updated_at': 0}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\"\n}\n\n\n\u003e db.users.update({'_id': 1}, {'$set': {'tags': ['php', 'javascript', 'css']}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.users.update({'_id': 2}, {'$set': {'tags': ['jquery', 'javascript', 'python']}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.users.update({'_id': 3}, {'$set': {'tags': ['angular', 'javascript', 'haproxy']}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.users.update({'_id': 4}, {'$set': {'tags': ['angular3', 'vuejs', 'haproxy']}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\u003e db.users.find({}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"php\",\n        \"javascript\",\n        \"css\"\n    ]\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"jquery\",\n        \"javascript\",\n        \"python\"\n    ]\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular\",\n        \"javascript\",\n        \"haproxy\"\n    ]\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular3\",\n        \"vuejs\",\n        \"haproxy\"\n    ]\n}\n\u003e db.users.find({'tags': ['angular3', 'vuejs', 'haproxy']}).pretty()\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular3\",\n        \"vuejs\",\n        \"haproxy\"\n    ]\n}\n\u003e db.users.find({'tags': ['angular3', 'haproxy', 'vuejs']}).pretty()\n\u003e db.users.find({'tags': {'$all': ['angular3', 'haproxy', 'vuejs']}}).pretty()\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular3\",\n        \"vuejs\",\n        \"haproxy\"\n    ]\n}\n\n\u003e db.users.find({'tags': {'$size': 3}}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"php\",\n        \"javascript\",\n        \"css\"\n    ]\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"jquery\",\n        \"javascript\",\n        \"python\"\n    ]\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular\",\n        \"javascript\",\n        \"haproxy\"\n    ]\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular3\",\n        \"vuejs\",\n        \"haproxy\"\n    ]\n}\n\u003e db.users.find({'tags': {'$size': 1}}).pretty()\n\u003e db.users.find({'tags': {'$size': 2}}).pretty()\n\n\u003e db.users.find({'tags.1': 'vuejs'}).pretty()\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular3\",\n        \"vuejs\",\n        \"haproxy\"\n    ]\n}\n\n\u003e db.users.find({}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"php\",\n        \"javascript\",\n        \"css\"\n    ]\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"jquery\",\n        \"javascript\",\n        \"python\"\n    ]\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular\",\n        \"javascript\",\n        \"haproxy\"\n    ]\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular3\",\n        \"vuejs\",\n        \"haproxy\"\n    ]\n}\n\u003e db.users.find({}).skip(2).pretty()\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular\",\n        \"javascript\",\n        \"haproxy\"\n    ]\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular3\",\n        \"vuejs\",\n        \"haproxy\"\n    ]\n}\n\u003e db.users.find({}).skip(2).limit(1).pretty()\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular\",\n        \"javascript\",\n        \"haproxy\"\n    ]\n}\n\n\u003e db.users.find({}).sort({'_id': 1}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"php\",\n        \"javascript\",\n        \"css\"\n    ]\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"jquery\",\n        \"javascript\",\n        \"python\"\n    ]\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular\",\n        \"javascript\",\n        \"haproxy\"\n    ]\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular3\",\n        \"vuejs\",\n        \"haproxy\"\n    ]\n}\n\u003e db.users.find({}).sort({'_id': -1}).pretty()\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular3\",\n        \"vuejs\",\n        \"haproxy\"\n    ]\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular\",\n        \"javascript\",\n        \"haproxy\"\n    ]\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"jquery\",\n        \"javascript\",\n        \"python\"\n    ]\n}\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"php\",\n        \"javascript\",\n        \"css\"\n    ]\n}\n```\n\n### Indexing\n\n```\n\u003e db.restaurants.find({'address.street': '3 Avenue'}).explain('executionStats')\n{\n    \"queryPlanner\" : {\n        \"plannerVersion\" : 1,\n        \"namespace\" : \"test.restaurants\",\n        \"indexFilterSet\" : false,\n        \"parsedQuery\" : {\n            \"address.street\" : {\n                \"$eq\" : \"3 Avenue\"\n            }\n        },\n        \"winningPlan\" : {\n            \"stage\" : \"COLLSCAN\",\n            \"filter\" : {\n                \"address.street\" : {\n                    \"$eq\" : \"3 Avenue\"\n                }\n            },\n            \"direction\" : \"forward\"\n        },\n        \"rejectedPlans\" : [ ]\n    },\n    \"executionStats\" : {\n        \"executionSuccess\" : true,\n        \"nReturned\" : 553,\n        \"executionTimeMillis\" : 20,\n        \"totalKeysExamined\" : 0,\n        \"totalDocsExamined\" : 25359,\n        \"executionStages\" : {\n            \"stage\" : \"COLLSCAN\",\n            \"filter\" : {\n                \"address.street\" : {\n                    \"$eq\" : \"3 Avenue\"\n                }\n            },\n            \"nReturned\" : 553,\n            \"executionTimeMillisEstimate\" : 20,\n            \"works\" : 25361,\n            \"advanced\" : 553,\n            \"needTime\" : 24807,\n            \"needYield\" : 0,\n            \"saveState\" : 198,\n            \"restoreState\" : 198,\n            \"isEOF\" : 1,\n            \"invalidates\" : 0,\n            \"direction\" : \"forward\",\n            \"docsExamined\" : 25359\n        }\n    },\n    \"serverInfo\" : {\n        \"host\" : \"2c9af55923a4\",\n        \"port\" : 27017,\n        \"version\" : \"3.2.4\",\n        \"gitVersion\" : \"e2ee9ffcf9f5a94fad76802e28cc978718bb7a30\"\n    },\n    \"ok\" : 1\n}\n\n\u003e db.restaurants.find({'address.street': '3 Avenue'}).explain('executionStats').executionStats.totalDocsExamined\n25359\n\u003e db.restaurants.ensureIndex({'address.street': 1})\n{\n    \"createdCollectionAutomatically\" : false,\n    \"numIndexesBefore\" : 1,\n    \"numIndexesAfter\" : 2,\n    \"ok\" : 1\n}\n\u003e db.restaurants.find({'address.street': '3 Avenue'}).explain('executionStats').executionStats.totalDocsExamined\n553\n\u003e db.restaurants.dropIndex({'address.street': 1})\n{ \"nIndexesWas\" : 2, \"ok\" : 1 }\n\u003e db.restaurants.find({'address.street': '3 Avenue'}).explain('executionStats').executionStats.totalDocsExamined\n25359\n```\n\n## Aggregation Framework\n\n### `$project` Modifier\n```\n\u003e db.users.find({}).pretty()\n{\n    \"_id\" : 1,\n    \"first_name\" : \"Mark\",\n    \"last_name\" : \"Doe\",\n    \"username\" : \"admin\",\n    \"email\" : \"admin@clivern.com\",\n    \"job_title\" : \"CEO\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"php\",\n        \"javascript\",\n        \"css\"\n    ]\n}\n{\n    \"_id\" : 2,\n    \"first_name\" : \"Selena\",\n    \"last_name\" : \"Gomez\",\n    \"username\" : \"selena\",\n    \"email\" : \"selena@clivern.com\",\n    \"job_title\" : \"Backend Developer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"jquery\",\n        \"javascript\",\n        \"python\"\n    ]\n}\n{\n    \"_id\" : 3,\n    \"first_name\" : \"Helen\",\n    \"last_name\" : \"Otal\",\n    \"username\" : \"helen\",\n    \"email\" : \"helen@clivern.com\",\n    \"job_title\" : \"Web Designer\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular\",\n        \"javascript\",\n        \"haproxy\"\n    ]\n}\n{\n    \"_id\" : 4,\n    \"first_name\" : \"Joe\",\n    \"last_name\" : \"Mar\",\n    \"username\" : \"joe\",\n    \"email\" : \"joe@clivern.com\",\n    \"job_title\" : \"Support Agent\",\n    \"created_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"updated_at\" : ISODate(\"2016-04-24T17:52:24.040Z\"),\n    \"tags\" : [\n        \"angular3\",\n        \"vuejs\",\n        \"haproxy\"\n    ]\n}\n\n\u003e db.users.aggregate({'$project': {'username': 1}})\n{ \"_id\" : 1, \"username\" : \"admin\" }\n{ \"_id\" : 2, \"username\" : \"selena\" }\n{ \"_id\" : 3, \"username\" : \"helen\" }\n{ \"_id\" : 4, \"username\" : \"joe\" }\n\n\u003e db.users.aggregate({'$project': {'username': 1, '_id': 0}})\n{ \"username\" : \"admin\" }\n{ \"username\" : \"selena\" }\n{ \"username\" : \"helen\" }\n{ \"username\" : \"joe\" }\n\n\u003e db.users.aggregate({'$project': {'username': '$_id', '_id': 0}})\n{ \"username\" : 1 }\n{ \"username\" : 2 }\n{ \"username\" : 3 }\n{ \"username\" : 4 }\n\n\u003e db.users.aggregate({'$project': {'id': '$username', '_id': 0}})\n{ \"id\" : \"admin\" }\n{ \"id\" : \"selena\" }\n{ \"id\" : \"helen\" }\n{ \"id\" : \"joe\" }\n\n\u003e db.users.aggregate({'$project': {'field_name': '$username', '_id': 0}})\n{ \"field_name\" : \"admin\" }\n{ \"field_name\" : \"selena\" }\n{ \"field_name\" : \"helen\" }\n{ \"field_name\" : \"joe\" }\n```\n\n### `$match` Modifier\n```\n\u003e db.users.aggregate({'$project': {'id': '$username', '_id': 0}}, {'$match': {'id': 'admin'}})\n{ \"id\" : \"admin\" }\n\n\u003e db.users.aggregate({'$project': {'id': '$_id', '_id': 0}}, {'$match': {'id': {'$gt': 1}}})\n{ \"id\" : 2 }\n{ \"id\" : 3 }\n{ \"id\" : 4 }\n\n\u003e db.users.aggregate({'$project': {'id': '$_id', '_id': 0}}, {'$match': {'id': {'$gte': 1}}})\n{ \"id\" : 1 }\n{ \"id\" : 2 }\n{ \"id\" : 3 }\n{ \"id\" : 4 }\n\n\u003e db.users.aggregate({'$project': {'id': '$_id', '_id': 0}}, {'$match': {'id': {'$lte': 1}}})\n{ \"id\" : 1 }\n\n\u003e db.users.aggregate({'$project': {'id': '$_id', '_id': 0}}, {'$match': {'id': {'$lt': 2}}})\n{ \"id\" : 1 }\n\n\u003e db.users.aggregate({'$project': {'id': '$_id', '_id': 0}}, {'$match': {'id': {'$in': [1, 2, 4]}}})\n{ \"id\" : 1 }\n{ \"id\" : 2 }\n{ \"id\" : 4 }\n```\n\n### `$add`, `$subtract`, `$multiply`, `$divide` and `$mod` Modifier\n```\n\u003e db.results.find({}).pretty()\n{\n    \"_id\" : 1,\n    \"name\" : \"mark\",\n    \"math_result\" : 60,\n    \"physics_result\" : 23,\n    \"cs_result\" : 78\n}\n{\n    \"_id\" : 2,\n    \"name\" : \"helen\",\n    \"math_result\" : 50,\n    \"physics_result\" : 48,\n    \"cs_result\" : 74\n}\n{\n    \"_id\" : 3,\n    \"name\" : \"timber\",\n    \"math_result\" : 65,\n    \"physics_result\" : 14,\n    \"cs_result\" : 56\n}\n{\n    \"_id\" : 4,\n    \"name\" : \"demi\",\n    \"math_result\" : 87,\n    \"physics_result\" : 78,\n    \"cs_result\" : 14\n}\n{\n    \"_id\" : 5,\n    \"name\" : \"jenny\",\n    \"math_result\" : 76,\n    \"physics_result\" : 45,\n    \"cs_result\" : 78\n}\n\n\u003e db.results.aggregate({'$project': {'total': {'$add': ['$math_result', '$cs_result']}}})\n{ \"_id\" : 1, \"total\" : 138 }\n{ \"_id\" : 2, \"total\" : 124 }\n{ \"_id\" : 3, \"total\" : 121 }\n{ \"_id\" : 4, \"total\" : 101 }\n{ \"_id\" : 5, \"total\" : 154 }\n\n\u003e db.results.aggregate({'$project': {'total': {'$add': ['$math_result', '$physics_result' , '$cs_result']}}})\n{ \"_id\" : 1, \"total\" : 161 }\n{ \"_id\" : 2, \"total\" : 172 }\n{ \"_id\" : 3, \"total\" : 135 }\n{ \"_id\" : 4, \"total\" : 179 }\n{ \"_id\" : 5, \"total\" : 199 }\n\n\u003e db.results.aggregate({'$project': {'total': {'$subtract': [{'$add': ['$math_result', '$physics_result' , '$cs_result']}, 100]}}})\n{ \"_id\" : 1, \"total\" : 61 }\n{ \"_id\" : 2, \"total\" : 72 }\n{ \"_id\" : 3, \"total\" : 35 }\n{ \"_id\" : 4, \"total\" : 79 }\n{ \"_id\" : 5, \"total\" : 99 }\n\n\u003e db.results.aggregate({'$project': {'total': {'$multiply': [{'$add': ['$math_result', '$physics_result' , '$cs_result']}, 100]}}})\n{ \"_id\" : 1, \"total\" : 16100 }\n{ \"_id\" : 2, \"total\" : 17200 }\n{ \"_id\" : 3, \"total\" : 13500 }\n{ \"_id\" : 4, \"total\" : 17900 }\n{ \"_id\" : 5, \"total\" : 19900 }\n\n\u003e db.results.aggregate({'$project': {'total': {'$divide': [{'$add': ['$math_result', '$physics_result' , '$cs_result']}, 100]}}})\n{ \"_id\" : 1, \"total\" : 1.61 }\n{ \"_id\" : 2, \"total\" : 1.72 }\n{ \"_id\" : 3, \"total\" : 1.35 }\n{ \"_id\" : 4, \"total\" : 1.79 }\n{ \"_id\" : 5, \"total\" : 1.99 }\n\n\u003e db.results.aggregate({'$project': {'total': {'$mod': [{'$add': ['$math_result', '$physics_result' , '$cs_result']}, 100]}}})\n{ \"_id\" : 1, \"total\" : 61 }\n{ \"_id\" : 2, \"total\" : 72 }\n{ \"_id\" : 3, \"total\" : 35 }\n{ \"_id\" : 4, \"total\" : 79 }\n{ \"_id\" : 5, \"total\" : 99 }\n```\n\n### `$substr`, `$concat`, `$toLower` and `$toUpper` Modifier\n```\n\u003e db.tuts.find({}).pretty()\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"),\n    \"title\" : \"Hello World\",\n    \"author\" : \"Mark\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\")\n}\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"),\n    \"title\" : \"Post Title\",\n    \"author\" : \"Helen\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\")\n}\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"),\n    \"title\" : \"WordPress Article\",\n    \"author\" : \"Jenny\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\")\n}\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$substr': ['$title', 0, 1]}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : \"H\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : \"P\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : \"W\" }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$concat': ['title: ', '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : \"title: Hello World\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : \"title: Post Title\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : \"title: WordPress Article\" }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$toLower': '$title'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : \"hello world\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : \"post title\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : \"wordpress article\" }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$toUpper': '$title'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : \"HELLO WORLD\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : \"POST TITLE\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : \"WORDPRESS ARTICLE\" }\n```\n\n### `$year`, `$month`, `$week`, `$hour`, `$minute`, `$second`, `$dayOfMonth`, `$dayOfWeek` and `$dayOfYear` Modifier\n```\n\u003e db.tuts.aggregate({'$project': {'created_in_year': {'$year': '$created_at'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"created_in_year\" : 2016 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"created_in_year\" : 2016 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"created_in_year\" : 2016 }\n\n\u003e db.tuts.aggregate({'$project': {'created_in_month': {'$month': '$created_at'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"created_in_month\" : 4 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"created_in_month\" : 4 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"created_in_month\" : 4 }\n\n\u003e db.tuts.aggregate({'$project': {'created_in_week': {'$week': '$created_at'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"created_in_week\" : 17 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"created_in_week\" : 17 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"created_in_week\" : 17 }\n\n\u003e db.tuts.aggregate({'$project': {'created_in_hour': {'$hour': '$created_at'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"created_in_hour\" : 11 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"created_in_hour\" : 11 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"created_in_hour\" : 11 }\n\n\u003e db.tuts.aggregate({'$project': {'created_in_minute': {'$minute': '$created_at'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"created_in_minute\" : 59 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"created_in_minute\" : 59 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"created_in_minute\" : 59 }\n\n\u003e db.tuts.aggregate({'$project': {'created_in_second': {'$second': '$created_at'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"created_in_second\" : 35 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"created_in_second\" : 35 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"created_in_second\" : 35 }\n\n\u003e db.tuts.aggregate({'$project': {'created_in_day_of_month': {'$dayOfMonth': '$created_at'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"created_in_day_of_month\" : 25 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"created_in_day_of_month\" : 25 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"created_in_day_of_month\" : 25 }\n\n\u003e db.tuts.aggregate({'$project': {'created_in_day_of_week': {'$dayOfWeek': '$created_at'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"created_in_day_of_week\" : 2 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"created_in_day_of_week\" : 2 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"created_in_day_of_week\" : 2 }\n\n\u003e db.tuts.aggregate({'$project': {'created_in_day_of_year': {'$dayOfYear': '$created_at'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"created_in_day_of_year\" : 116 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"created_in_day_of_year\" : 116 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"created_in_day_of_year\" : 116 }\n```\n\n### `$cmp`, `$strcasecmp`, `$eq`, `$ne`, `$gt`, `$gte`, `$lt`, `$lte`, `$and`, `$or`, `$not`, `$cond` and `$ifNull` Modifier\n```\n\u003e db.tuts.aggregate({'$project': {'title': {'$cmp': ['Hello World', '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : 0 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : -1 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : -1 }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$cmp': ['hello World', '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : 1 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : 1 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : 1 }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$strcasecmp': ['hello World', '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : 0 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : -1 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : -1 }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$eq': ['Hello World', '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : true }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : false }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : false }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$ne': ['Hello World', '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : false }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : true }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : true }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$gt': ['Hello World', '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : false }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : false }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : false }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$gte': ['Hello World', '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : true }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : false }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : false }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$lt': ['Hello World', '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : false }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : true }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : true }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$lte': ['Hello World', '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : true }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : true }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : true }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$and': [0, '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : false }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : false }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : false }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$or': [0, '$title']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : true }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : true }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : true }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$not': '$title'}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : false }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : false }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : false }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$cond': ['$title', 'not empty', 'empty']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : \"not empty\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : \"not empty\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : \"not empty\" }\n\n\u003e db.tuts.aggregate({'$project': {'title': {'$ifNull': ['$title', 'null value']}}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : \"Hello World\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : \"Post Title\" }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : \"WordPress Article\" }\n```\n\n### `$group` Modifier\n```\n\u003e db.tuts.find({}).pretty()\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"),\n    \"title\" : \"Hello World\",\n    \"author\" : \"Mark\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 0\n}\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"),\n    \"title\" : \"Post Title\",\n    \"author\" : \"Helen\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 0\n}\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"),\n    \"title\" : \"WordPress Article\",\n    \"author\" : \"Jenny\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 0\n}\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': {'title': '$title', 'author': '$author'} }})\n{ \"_id\" : { \"title\" : \"WordPress Article\", \"author\" : \"Jenny\" } }\n{ \"_id\" : { \"title\" : \"Post Title\", \"author\" : \"Helen\" } }\n{ \"_id\" : { \"title\" : \"Hello World\", \"author\" : \"Mark\" } }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': {'title': '$title', 'author': '$author', 'author_name': '$author'} }})\n{ \"_id\" : { \"title\" : \"WordPress Article\", \"author\" : \"Jenny\", \"author_name\" : \"Jenny\" } }\n{ \"_id\" : { \"title\" : \"Post Title\", \"author\" : \"Helen\", \"author_name\" : \"Helen\" } }\n{ \"_id\" : { \"title\" : \"Hello World\", \"author\" : \"Mark\", \"author_name\" : \"Mark\" } }\n\n\u003e db.tuts.find({}).pretty()\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"),\n    \"title\" : \"Hello World\",\n    \"author\" : \"Mark\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 0\n}\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"),\n    \"title\" : \"Post Title\",\n    \"author\" : \"Helen\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 0\n}\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"),\n    \"title\" : \"WordPress Article\",\n    \"author\" : \"Jenny\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 0\n}\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': {'title': '$title', 'author': '$author'} }})\n{ \"_id\" : { \"title\" : \"WordPress Article\", \"author\" : \"Jenny\" } }\n{ \"_id\" : { \"title\" : \"Post Title\", \"author\" : \"Helen\" } }\n{ \"_id\" : { \"title\" : \"Hello World\", \"author\" : \"Mark\" } }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': {'title': '$title', 'author': '$author', 'author_name': '$author'} }})\n{ \"_id\" : { \"title\" : \"WordPress Article\", \"author\" : \"Jenny\", \"author_name\" : \"Jenny\" } }\n{ \"_id\" : { \"title\" : \"Post Title\", \"author\" : \"Helen\", \"author_name\" : \"Helen\" } }\n{ \"_id\" : { \"title\" : \"Hello World\", \"author\" : \"Mark\", \"author_name\" : \"Mark\" } }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': '$title'}})\n{ \"_id\" : \"WordPress Article\" }\n{ \"_id\" : \"Post Title\" }\n{ \"_id\" : \"Hello World\" }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': '$title'}})\n{ \"_id\" : \"WordPress Article\" }\n{ \"_id\" : \"Post Title\" }\n{ \"_id\" : \"Hello World\" }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': '$title', 'num': {'$sum': 1}}})\n{ \"_id\" : \"WordPress Article\", \"num\" : 1 }\n{ \"_id\" : \"Post Title\", \"num\" : 1 }\n{ \"_id\" : \"Hello World\", \"num\" : 1 }\n\n\u003e db.tuts.find({})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"), \"title\" : \"Hello World\", \"author\" : \"Mark\", \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"), \"votes\" : 0 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"), \"title\" : \"Post Title\", \"author\" : \"Helen\", \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"), \"votes\" : 0 }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"title\" : \"WordPress Article\", \"author\" : \"Jenny\", \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"), \"votes\" : 0 }\n\n\u003e db.tuts.insert({\"title\" : \"Hello World\", \"author\" : \"Mark\", \"created_at\" : new Date(), \"votes\" : 0 })\nWriteResult({ \"nInserted\" : 1 })\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': '$title', 'num': {'$sum': 1}}})\n{ \"_id\" : \"WordPress Article\", \"num\" : 1 }\n{ \"_id\" : \"Post Title\", \"num\" : 1 }\n{ \"_id\" : \"Hello World\", \"num\" : 2 }\n\n\u003e db.tuts.find({}).pretty()\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"),\n    \"title\" : \"Hello World\",\n    \"author\" : \"Mark\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 0\n}\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"),\n    \"title\" : \"Post Title\",\n    \"author\" : \"Helen\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 0\n}\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"),\n    \"title\" : \"WordPress Article\",\n    \"author\" : \"Jenny\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 0\n}\n{\n    \"_id\" : ObjectId(\"571e776916393222690de28e\"),\n    \"title\" : \"Hello World\",\n    \"author\" : \"Mark\",\n    \"created_at\" : ISODate(\"2016-04-25T20:00:41.442Z\"),\n    \"votes\" : 0\n}\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': '$title', 'num': {'$sum': 1}}})\n{ \"_id\" : \"WordPress Article\", \"num\" : 1 }\n{ \"_id\" : \"Post Title\", \"num\" : 1 }\n{ \"_id\" : \"Hello World\", \"num\" : 2 }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': '$title', 'num': {'$sum': 0}}})\n{ \"_id\" : \"WordPress Article\", \"num\" : 0 }\n{ \"_id\" : \"Post Title\", \"num\" : 0 }\n{ \"_id\" : \"Hello World\", \"num\" : 0 }\n\n\u003e db.tuts.update({'title': 'Hello World'}, {'$inc': {'votes': 50}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\n\u003e db.tuts.update({'title': 'Post Title'}, {'$inc': {'votes': 40}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\n\u003e db.tuts.update({'title': 'WordPress Article'}, {'$inc': {'votes': 80}})\nWriteResult({ \"nMatched\" : 1, \"nUpserted\" : 0, \"nModified\" : 1 })\n\n\u003e db.tuts.find({}).pretty()\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c7\"),\n    \"title\" : \"Hello World\",\n    \"author\" : \"Mark\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 50\n}\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c8\"),\n    \"title\" : \"Post Title\",\n    \"author\" : \"Helen\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 40\n}\n{\n    \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"),\n    \"title\" : \"WordPress Article\",\n    \"author\" : \"Jenny\",\n    \"created_at\" : ISODate(\"2016-04-25T11:59:35.742Z\"),\n    \"votes\" : 80\n}\n{\n    \"_id\" : ObjectId(\"571e776916393222690de28e\"),\n    \"title\" : \"Hello World\",\n    \"author\" : \"Mark\",\n    \"created_at\" : ISODate(\"2016-04-25T20:00:41.442Z\"),\n    \"votes\" : 0\n}\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author'}}, {'$group': {'_id': '$title', 'max_votes': {'$max': '$votes'}}})\n{ \"_id\" : \"WordPress Article\", \"max_votes\" : null }\n{ \"_id\" : \"Post Title\", \"max_votes\" : null }\n{ \"_id\" : \"Hello World\", \"max_votes\" : null }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author', 'votes': '$votes'}}, {'$group': {'_id': '$title', 'max_votes': {'$max': '$votes'}}})\n{ \"_id\" : \"WordPress Article\", \"max_votes\" : 80 }\n{ \"_id\" : \"Post Title\", \"max_votes\" : 40 }\n{ \"_id\" : \"Hello World\", \"max_votes\" : 50 }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author', 'votes': '$votes'}}, {'$group': {'_id': '$title', 'max_votes': {'$min': '$votes'}}})\n{ \"_id\" : \"WordPress Article\", \"max_votes\" : 80 }\n{ \"_id\" : \"Post Title\", \"max_votes\" : 40 }\n{ \"_id\" : \"Hello World\", \"max_votes\" : 0 }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author', 'votes': '$votes'}}, {'$group': {'_id': '$title', 'min_votes': {'$min': '$votes'}}})\n{ \"_id\" : \"WordPress Article\", \"min_votes\" : 80 }\n{ \"_id\" : \"Post Title\", \"min_votes\" : 40 }\n{ \"_id\" : \"Hello World\", \"min_votes\" : 0 }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author', 'votes': '$votes'}}, {'$group': {'_id': '$title', 'max_votes': {'$max': '$votes'}}})\n{ \"_id\" : \"WordPress Article\", \"max_votes\" : 80 }\n{ \"_id\" : \"Post Title\", \"max_votes\" : 40 }\n{ \"_id\" : \"Hello World\", \"max_votes\" : 50 }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author', 'votes': '$votes'}}, {'$group': {'_id': '$title', 'min_votes': {'$min': '$votes'}}})\n{ \"_id\" : \"WordPress Article\", \"min_votes\" : 80 }\n{ \"_id\" : \"Post Title\", \"min_votes\" : 40 }\n{ \"_id\" : \"Hello World\", \"min_votes\" : 0 }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author', 'votes': '$votes'}}, {'$group': {'_id': '$title', 'first': {'$first': '$votes'}}})\n{ \"_id\" : \"WordPress Article\", \"first\" : 80 }\n{ \"_id\" : \"Post Title\", \"first\" : 40 }\n{ \"_id\" : \"Hello World\", \"first\" : 50 }\n\n\u003e db.tuts.aggregate({'$project': {'title': '$title', 'author': '$author', 'votes': '$votes'}}, {'$group': {'_id': '$title', 'last': {'$last': '$votes'}}})\n{ \"_id\" : \"WordPress Article\", \"last\" : 80 }\n{ \"_id\" : \"Post Title\", \"last\" : 40 }\n{ \"_id\" : \"Hello World\", \"last\" : 0 }\n\n\u003e db.tuts.aggregate({'$match': {'title': 'WordPress Article'}}, {'$project': {'comments': '$comments'}}, {'$unwind': '$comments'})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla1\" } }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla2\" } }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla3\" } }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla4\" } }\n\n\u003e db.tuts.aggregate({'$match': {'title': 'WordPress Article'}}, {'$project': {'comments': '$comments'}}, {'$unwind': '$comments'}, {'$skip': 1})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla2\" } }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla3\" } }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla4\" } }\n\n\u003e db.tuts.aggregate({'$match': {'title': 'WordPress Article'}}, {'$project': {'comments': '$comments'}}, {'$unwind': '$comments'}, {'$skip': 1}, {'$limit': 2})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla2\" } }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla3\" } }\n\n\u003e db.tuts.aggregate({'$match': {'title': 'WordPress Article'}}, {'$project': {'comments': '$comments'}}, {'$unwind': '$comments'}, {'$skip': 1}, {'$limit': 2}, {'$sort':{'comments.content': 1}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla2\" } }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla3\" } }\n\n\u003e db.tuts.aggregate({'$match': {'title': 'WordPress Article'}}, {'$project': {'comments': '$comments'}}, {'$unwind': '$comments'}, {'$skip': 1}, {'$limit': 2}, {'$sort':{'comments.content': -1}})\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla3\" } }\n{ \"_id\" : ObjectId(\"571e06a776dcd773abde06c9\"), \"comments\" : { \"content\" : \"bla bla2\" } }\n```\n\n### MapReduce\n```\ndb.orders.insert([{'cust_id': 'A123', 'amount': 500, 'status': 'A'},{'cust_id': 'A124', 'amount': 600, 'status': 'B'},{'cust_id': 'A125', 'amount': 700, 'status': 'C'}])\ndb.orders.mapReduce(function(){ emit(this.cust_id, this.amount); }, function(key, values){ return Array.sum(values); },{ 'query': {'status':'A'}, 'out': 'order_totals' })\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclivern%2Fmongoplaybook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclivern%2Fmongoplaybook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclivern%2Fmongoplaybook/lists"}