Shiv,
$unwind is an aggregation pipeline stage, which deconstructs the output by each element in the array and
$reduce is an aggregation pipeline operator to combine elements in an array. $reduce needs to be used with an aggregation pipeline stage like $project.
For
both instances you would need to be cognizant of the
aggregation pipeline limitations.
Note that $unwind deconstruct an array input and turns into individual documents. $reduce operator is to process each element in an array through an expression, but is not able to "expand/create" new documents. They have quite different purpose.
It would be good to understand the structure of your document on how the array is embedded, so could you please share the details with a sample document and how you are using $reduce for your use case, so that I can help provide additional guidance. Additionally, please confirm which MongoDB version you are using with db.version(), is it 3.4?
To address your second question, $unwind doesn't include $sort, please refer to
this documentation on how to utilize $unwind and $sort together.
Regards,
Rupa