$unwind deconstructs an array field in each input document, outputting one document per array element. A document with an array of N elements produces N output documents, each containing one element in place of the original array.
Why Use $unwind?
- Group by array elements — e.g., count documents per tag, per item
- Filter individual elements — remove/select specific elements from each doc's array
- Flatten a $lookup result — convert 1-to-1 join array into an embedded object
- Per-element computation — apply expressions to each element before re-grouping