

{"id":49549,"date":"2019-02-16T09:05:30","date_gmt":"2019-02-16T03:35:30","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=49549"},"modified":"2021-05-09T13:07:15","modified_gmt":"2021-05-09T07:37:15","slug":"mongodb-aggregation-tutorial","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/","title":{"rendered":"MongoDB Aggregation (Types &amp; Expression) &#8211; 7 Stages of Aggregation Pipeline"},"content":{"rendered":"<p>Hope, you are enjoying MongoDB tutorials. The last session was all about <strong>MongoDB GridFS<\/strong>. Today, we will see a new term called MongoDB Aggregation, an aggregation operation, MongoDB processes the data records and returns a single computed result.<\/p>\n<p>Here, we will talk about types of aggregation, expression, and stages of aggregation pipeline with examples.<\/p>\n<p>So, let&#8217;s start the MongoDB Aggregation Tutorial.<\/p>\n<h2>What is MongoDB Aggregation?<\/h2>\n<p>In aggregation operation, MongoDB processes the data records and returns a single computed result. It actually groups multiple documents and then performs aggregation operation on it and after that returns a single result to the end user.<\/p>\n<p>MongoDB can perform aggregation in 3 ways and they are as follows:<\/p>\n<ol>\n<li>Aggregation Pipeline<\/li>\n<li>Map-Reduce Function<\/li>\n<li>Single Purpose Aggregation Method<\/li>\n<\/ol>\n<h3>i. MongoDB Aggregation Pipeline<\/h3>\n<p>Aggregation process in<strong> MongoDB is modeled on the concept of data<\/strong> processing pipelines. Multiple documents enter the pipeline and then these documents are being transformed into aggregated results.<\/p>\n<p>The operations being performed during pipeline include filter and document transformation in which they operate like queries and modify the form of output document respectively.<\/p>\n<p>The pipeline method provides efficient data aggregation using other operations present in MongoDB. It can also operate on a sharded collection.<\/p>\n<p>It can also use <strong>MongoDB indexes<\/strong> to improve its efficiency at some stages. With all this aggregation pipeline has an internal optimization phase due to which it can make this process optimal for the processor.<\/p>\n<div style=\"width: 830px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Aggregation-pipeline-example.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Aggregation-pipeline-example.png\" alt=\"MongoDB Aggregation Pipeline Example\" width=\"820\" height=\"590\" \/><\/a><p class=\"wp-caption-text\">MongoDB Aggregation Pipeline Example<\/p><\/div>\n<h3>ii. Map-Reduce<\/h3>\n<p>As the name suggests it has two operations in itself, they are a <em>map<\/em> in which each document is being processed along with emitting one or more objects for each document and <em>reduce<\/em> phase in which output of map operation are being combined together.<\/p>\n<p><strong>MongoDB Map-reduce<\/strong> can optionally have a finalize stage in which it can do some final modifications in the output of the document. Map-Reduce uses JavaScript to perform its operations including the finalize operation.<\/p>\n<p>Even though javascript provides greater flexibility than aggregation pipeline, but still it is less efficient and more complex operation as compared to the aggregation pipeline in MongoDB.<\/p>\n<div style=\"width: 825px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Mapreduce-example.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Mapreduce-example.png\" alt=\"MongoDB Mapreduce Example\" width=\"815\" height=\"700\" \/><\/a><p class=\"wp-caption-text\">MongoDB Mapreduce Example<\/p><\/div>\n<h3>iii. Single Purpose Aggregation Operations<\/h3>\n<p>These operations aggregate all the documents from a single <strong>collection in MongoDB<\/strong>. Even though they provide simple access to common aggregation operations they lack the flexibility and capability of map-reduce and aggregation pipeline.<\/p>\n<div style=\"width: 450px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/Single-Purpose-Aggregation-Operation-Example.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/Single-Purpose-Aggregation-Operation-Example.png\" alt=\"Single Purpose Aggregation Operation Example\" width=\"440\" height=\"540\" \/><\/a><p class=\"wp-caption-text\">Single Purpose Aggregation Operation Example<\/p><\/div>\n<h2>Stages of MongoDB Aggregation Pipeline<\/h2>\n<p>These are 7 stages of aggregation of Pipeline in MongoDB:<\/p>\n<ol>\n<li>$project<\/li>\n<li>$match<\/li>\n<li>$group<\/li>\n<li>$sort<\/li>\n<li>$skip &amp; $limit<\/li>\n<li>$first &amp; $last<\/li>\n<li>$unwind<\/li>\n<\/ol>\n<h3>i. $project<\/h3>\n<p>This stage is used to select certain fields from a collection. We can also add, remove or reshape a key.<\/p>\n<p><strong>Example &#8211;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.example.aggregate([\r\n  {\r\n    $project:{\r\n     _id:1,\r\n     'dept':{$toUpper:'$name'},\r\n     'newexp':{$add:['$exp',10]}\r\n   }\r\n      }\r\n  ])<\/pre>\n<p>Here we are creating \u2018dept\u2019 from earlier \u2018name\u2019 which was in upper case. And in \u2018newexp\u2019 we are adding the experience as 10 years.<\/p>\n<h3>ii. $match<\/h3>\n<p>It is used in filtering operation and it can reduce the number of documents that are given as input to the next stage.<strong>\u00a0<\/strong><\/p>\n<p><strong>Example &#8211;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.example.aggregate([\r\n   {\r\n     $match:{\r\n        name:'xyz'\r\n      }\r\n    }\r\n])<\/pre>\n<p>Here we are <strong>aggregating documents<\/strong> that have a name equal to xyz.<\/p>\n<h3>iii. $group<\/h3>\n<p>It does the work as the name says. It groups all documents based on some keys.<\/p>\n<p><strong>Example &#8211;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.example.aggregate([\r\n  {\r\n     $group:{\r\n       _id:{'dept':'$name'},\r\n       employee_count:{$sum:10}\r\n      }\r\n   }\r\n])<\/pre>\n<h3>iv. $sort<\/h3>\n<p>It is used to sort all the documents.<\/p>\n<p><strong>Example &#8211;<\/strong><\/p>\n<p>Here we want to group all department in ascending order and then find the count of employees.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.example.aggregate([\r\n  {\r\n    $group:{\r\n      _id:'$name',\r\n      employee_count:{$sum:1}\r\n    }\r\n },\r\n {\r\n    $sort:{\r\n       _id:1\r\n      }\r\n   }\r\n])<\/pre>\n<h3>v. $skip &amp; $limit<\/h3>\n<p>Using skip we can skip forward in the list of all documents for the given limit. And using limit we can limit the number of documents we want to look at by specifying the limit as per our convenience.<\/p>\n<p><strong>Example &#8211;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.example.aggregate([\r\n   {\r\n     $group:{\r\n       _id:'$name',\r\n       employee_count:{$sum:10}\r\n      }\r\n   },\r\n  {\r\n     $sort:{\r\n     _id:1\r\n    }\r\n  },\r\n {\r\n    $skip:4\r\n },\r\n {\r\n    $limit:5\r\n }\r\n])\r\n<\/pre>\n<h3>vi. $first &amp; $last<\/h3>\n<p>It is used to get the first and last values in each group of documents.<\/p>\n<p><strong>Example &#8211;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.example.aggregate([\r\n  {\r\n    $group:{\r\n      _id:'$name',\r\n      employee_count:{$sum:1},\r\n      record:{ $first:'$code'}\r\n     }\r\n   }\r\n])<\/pre>\n<h3>vii. $unwind<\/h3>\n<p>We can use unwind for all documents, that are using arrays.<\/p>\n<p><strong>Example &#8211;<\/strong><\/p>\n<p>Let\u2019s say that we are having a sample document:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">{\r\n  a:abcdata,\r\n  b:xyzdata,\r\n  c:[a1,a2,a3]\r\n}<\/pre>\n<p>After this if we perform unwind operation on c then we will get 3 documents as follows:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">{\r\n    a:abcdata,\r\n    b:xyzdata,\r\n    c:a1\r\n}\r\n{\r\n    a:abcdata,\r\n    b:xyzdata,\r\n    c:a2\r\n}\r\n{\r\n    a:abcdata,\r\n    b:xyzdata,\r\n    c:a3\r\n}<\/pre>\n<h2>MongoDB Aggregation Expression<\/h2>\n<p>Following are the aggregation <strong>expression in MongoDB<\/strong> with an example:<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Aggregation-Expression-01.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Aggregation-Expression-01.jpg\" alt=\"MongoDB Aggregation Expression\" width=\"1200\" height=\"628\" \/><\/a><\/p>\n<ul>\n<li><strong>$sum<\/strong> &#8211;\u00a0Sums up values from all documents in the collection.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.examples.aggregate([{$group : {_id : \"$by_student\", num_dataflair : {$sum : \"$likes\"}}}])<\/pre>\n<ul>\n<li><strong>$avg<\/strong> &#8211;\u00a0Average of all documents in the collection.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.examples.aggregate([{$group : {_id : \"$by_student\", num_dataflair : {$avg : \"$likes\"}}}])<\/pre>\n<ul>\n<li><strong>$min<\/strong> &#8211; Minimum values of all documents in a collection.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.examples.aggregate([{$group : {_id : \"$by_student\", num_dataflair : {$min : \"$likes\"}}}])<\/pre>\n<ul>\n<li><strong>$max<\/strong> &#8211; Maximum values of all documents in a collection.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.examples.aggregate([{$group : {_id : \"$by_student\", num_dataflair : {$max : \"$likes\"}}}])<\/pre>\n<ul>\n<li><strong>$push<\/strong> &#8211;\u00a0Inserts value in the resulting document.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.examples.aggregate([{$group : {_id : \"$by_student\", url : {$push: \"$url\"}}}])<\/pre>\n<ul>\n<li><strong>$addToSet<\/strong> &#8211; Inserts value in resulting document without creating duplicates.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.examples.aggregate([{$group : {_id : \"$by_student\", url : {$addToSet : \"$url\"}}}])<\/pre>\n<ul>\n<li><strong>$first &#8211;\u00a0<\/strong>First document from the source documents according to grouping.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.examples.aggregate([{$group : {_id : \"$by_student\", first_url : {$first : \"$url\"}}}])<\/pre>\n<ul>\n<li><strong>$last &#8211;\u00a0<\/strong>Last document from the source documents according to grouping.<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">db.examples.aggregate([{$group : {_id : \"$by_student\", last_url : {$last : \"$url\"}}}])<\/pre>\n<h2>Conclusion<\/h2>\n<p>Hence, we studied about Aggregation in MongoDB with types: Aggregation Pipeline, Map-Reduce Function, and Single Purpose Aggregation Method with their examples.<\/p>\n<p>Along with this, we discussed the stages of aggregation pipeline and expression used in aggregation. Hope, you found it useful. Please do comment for queries.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hope, you are enjoying MongoDB tutorials. The last session was all about MongoDB GridFS. Today, we will see a new term called MongoDB Aggregation, an aggregation operation, MongoDB processes the data records and returns&#46;&#46;&#46;<\/p>\n","protected":false},"author":6,"featured_media":49606,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[18891,18888,18887,18892,18889,18890],"class_list":["post-49549","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mongodb","tag-mongodb-aggregation-example","tag-mongodb-aggregation-expression","tag-mongodb-aggregation-pipeline","tag-mongodb-aggregation-pipeline-stages","tag-mongodb-aggregation-tutorial","tag-what-is-mongodb-aggregation"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MongoDB Aggregation (Types &amp; Expression) - 7 Stages of Aggregation Pipeline - DataFlair<\/title>\n<meta name=\"description\" content=\"In this MongoDB Aggregation Tutorial, we will learn what is Aggregation with example, expressions, types, Aggregation Pipeline with stages with example\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MongoDB Aggregation (Types &amp; Expression) - 7 Stages of Aggregation Pipeline - DataFlair\" \/>\n<meta property=\"og:description\" content=\"In this MongoDB Aggregation Tutorial, we will learn what is Aggregation with example, expressions, types, Aggregation Pipeline with stages with example\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-02-16T03:35:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-09T07:37:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Aggregation-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MongoDB Aggregation (Types &amp; Expression) - 7 Stages of Aggregation Pipeline - DataFlair","description":"In this MongoDB Aggregation Tutorial, we will learn what is Aggregation with example, expressions, types, Aggregation Pipeline with stages with example","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/","og_locale":"en_US","og_type":"article","og_title":"MongoDB Aggregation (Types &amp; Expression) - 7 Stages of Aggregation Pipeline - DataFlair","og_description":"In this MongoDB Aggregation Tutorial, we will learn what is Aggregation with example, expressions, types, Aggregation Pipeline with stages with example","og_url":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2019-02-16T03:35:30+00:00","article_modified_time":"2021-05-09T07:37:15+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Aggregation-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/2c58ecb4f73a39f0ef993f1ddfcd7b89"},"headline":"MongoDB Aggregation (Types &amp; Expression) &#8211; 7 Stages of Aggregation Pipeline","datePublished":"2019-02-16T03:35:30+00:00","dateModified":"2021-05-09T07:37:15+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/"},"wordCount":826,"commentCount":1,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Aggregation-01.jpg","keywords":["MongoDB Aggregation example","MongoDB Aggregation Expression","MongoDB Aggregation Pipeline","MongoDB Aggregation Pipeline Stages","MongoDB Aggregation tutorial","What is MongoDB Aggregation"],"articleSection":["MongoDB Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/","url":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/","name":"MongoDB Aggregation (Types &amp; Expression) - 7 Stages of Aggregation Pipeline - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Aggregation-01.jpg","datePublished":"2019-02-16T03:35:30+00:00","dateModified":"2021-05-09T07:37:15+00:00","description":"In this MongoDB Aggregation Tutorial, we will learn what is Aggregation with example, expressions, types, Aggregation Pipeline with stages with example","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Aggregation-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2019\/02\/MongoDB-Aggregation-01.jpg","width":1200,"height":628,"caption":"What is MongoDB Aggregation"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/mongodb-aggregation-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"MongoDB Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/mongodb\/"},{"@type":"ListItem","position":3,"name":"MongoDB Aggregation (Types &amp; Expression) &#8211; 7 Stages of Aggregation Pipeline"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/2c58ecb4f73a39f0ef993f1ddfcd7b89","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"The DataFlair Team provides industry-driven content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our expert educators focus on delivering value-packed, easy-to-follow resources for tech enthusiasts and professionals.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam2\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/49549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=49549"}],"version-history":[{"count":6,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/49549\/revisions"}],"predecessor-version":[{"id":93175,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/49549\/revisions\/93175"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/49606"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=49549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=49549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=49549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}