{"id":3484,"date":"2024-03-13T07:01:59","date_gmt":"2024-03-13T07:01:59","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/"},"modified":"2025-07-30T17:00:35","modified_gmt":"2025-07-30T17:00:35","slug":"what-is-the-usage-of-the-unwind-function-in-mongodb","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/","title":{"rendered":"MongoDB $unwind: Usage &#038; Examples"},"content":{"rendered":"<p>In MongoDB, $unwind is an aggregation operator used to deconstruct an array field. It splits the array field into multiple documents, each containing only one element from the array. This operation is typically used for grouping and filtering fields that contain arrays.<\/p>\n<p>For instance, if there is a field &#8220;students&#8221; containing an array, the $unwind operator can be used to unfold this field into multiple documents, with each document containing information about one student. This enables easier manipulation and filtering of each student.<\/p>\n<p>For example, consider the following document structure:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-punctuation\">{<\/span>\r\n  <span class=\"hljs-attr\">\"_id\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">1<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"class\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"A\"<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"students\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-string\">\"Alice\"<\/span><span class=\"hljs-punctuation\">,<\/span> <span class=\"hljs-string\">\"Bob\"<\/span><span class=\"hljs-punctuation\">,<\/span> <span class=\"hljs-string\">\"Charlie\"<\/span><span class=\"hljs-punctuation\">]<\/span>\r\n<span class=\"hljs-punctuation\">}<\/span>\r\n<span class=\"hljs-punctuation\">{<\/span>\r\n  <span class=\"hljs-attr\">\"_id\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">2<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"class\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"B\"<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"students\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-punctuation\">[<\/span><span class=\"hljs-string\">\"David\"<\/span><span class=\"hljs-punctuation\">,<\/span> <span class=\"hljs-string\">\"Eve\"<\/span><span class=\"hljs-punctuation\">]<\/span>\r\n<span class=\"hljs-punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>By using the $unwind operator:<\/p>\n<pre class=\"post-pre\"><code>db.<span class=\"hljs-property\">collection<\/span>.<span class=\"hljs-title function_\">aggregate<\/span>([\r\n  { <span class=\"hljs-attr\">$unwind<\/span>: <span class=\"hljs-string\">\"$students\"<\/span> }\r\n])\r\n<\/code><\/pre>\n<p>After performing the above operation, the following results will be obtained:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-punctuation\">{<\/span>\r\n  <span class=\"hljs-attr\">\"_id\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">1<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"class\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"A\"<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"students\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"Alice\"<\/span>\r\n<span class=\"hljs-punctuation\">}<\/span>\r\n<span class=\"hljs-punctuation\">{<\/span>\r\n  <span class=\"hljs-attr\">\"_id\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">1<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"class\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"A\"<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"students\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"Bob\"<\/span>\r\n<span class=\"hljs-punctuation\">}<\/span>\r\n<span class=\"hljs-punctuation\">{<\/span>\r\n  <span class=\"hljs-attr\">\"_id\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">1<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"class\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"A\"<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"students\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"Charlie\"<\/span>\r\n<span class=\"hljs-punctuation\">}<\/span>\r\n<span class=\"hljs-punctuation\">{<\/span>\r\n  <span class=\"hljs-attr\">\"_id\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">2<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"class\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"B\"<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"students\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"David\"<\/span>\r\n<span class=\"hljs-punctuation\">}<\/span>\r\n<span class=\"hljs-punctuation\">{<\/span>\r\n  <span class=\"hljs-attr\">\"_id\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-number\">2<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"class\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"B\"<\/span><span class=\"hljs-punctuation\">,<\/span>\r\n  <span class=\"hljs-attr\">\"students\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"Eve\"<\/span>\r\n<span class=\"hljs-punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>We can see that the $unwind operator separates the &#8220;students&#8221; field in the original document into multiple documents, each containing information for only one student.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In MongoDB, $unwind is an aggregation operator used to deconstruct an array field. It splits the array field into multiple documents, each containing only one element from the array. This operation is typically used for grouping and filtering fields that contain arrays. For instance, if there is a field &#8220;students&#8221; containing an array, the $unwind [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[848,849,284,86,91],"class_list":["post-3484","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-unwind","tag-aggregation","tag-database","tag-mongodb","tag-nosql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>MongoDB $unwind: Usage &amp; Examples - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Master MongoDB&#039;s $unwind operator to deconstruct arrays. Learn key usage patterns and practical examples for aggregation pipeline.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MongoDB $unwind: Usage &amp; Examples\" \/>\n<meta property=\"og:description\" content=\"Master MongoDB&#039;s $unwind operator to deconstruct arrays. Learn key usage patterns and practical examples for aggregation pipeline.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-13T07:01:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-30T17:00:35+00:00\" \/>\n<meta name=\"author\" content=\"Liam\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Liam\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/\"},\"author\":{\"name\":\"Liam\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\"},\"headline\":\"MongoDB $unwind: Usage &#038; Examples\",\"datePublished\":\"2024-03-13T07:01:59+00:00\",\"dateModified\":\"2025-07-30T17:00:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/\"},\"wordCount\":135,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"$unwind\",\"Aggregation\",\"database\",\"MongoDB\",\"NoSQL\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/\",\"name\":\"MongoDB $unwind: Usage & Examples - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-13T07:01:59+00:00\",\"dateModified\":\"2025-07-30T17:00:35+00:00\",\"description\":\"Master MongoDB's $unwind operator to deconstruct arrays. Learn key usage patterns and practical examples for aggregation pipeline.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MongoDB $unwind: Usage &#038; Examples\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\",\"name\":\"Liam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"caption\":\"Liam\"},\"sameAs\":[\"http:\/\/Wilson\"],\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MongoDB $unwind: Usage & Examples - Blog - Silicon Cloud","description":"Master MongoDB's $unwind operator to deconstruct arrays. Learn key usage patterns and practical examples for aggregation pipeline.","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:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/","og_locale":"en_US","og_type":"article","og_title":"MongoDB $unwind: Usage & Examples","og_description":"Master MongoDB's $unwind operator to deconstruct arrays. Learn key usage patterns and practical examples for aggregation pipeline.","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-13T07:01:59+00:00","article_modified_time":"2025-07-30T17:00:35+00:00","author":"Liam","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Liam","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/"},"author":{"name":"Liam","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671"},"headline":"MongoDB $unwind: Usage &#038; Examples","datePublished":"2024-03-13T07:01:59+00:00","dateModified":"2025-07-30T17:00:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/"},"wordCount":135,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["$unwind","Aggregation","database","MongoDB","NoSQL"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/","name":"MongoDB $unwind: Usage & Examples - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-13T07:01:59+00:00","dateModified":"2025-07-30T17:00:35+00:00","description":"Master MongoDB's $unwind operator to deconstruct arrays. Learn key usage patterns and practical examples for aggregation pipeline.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-the-unwind-function-in-mongodb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MongoDB $unwind: Usage &#038; Examples"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671","name":"Liam","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","caption":"Liam"},"sameAs":["http:\/\/Wilson"],"url":"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/3484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=3484"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/3484\/revisions"}],"predecessor-version":[{"id":148134,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/3484\/revisions\/148134"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=3484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=3484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=3484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}