Agregações operações processam registros de dados e retornam resultados computados. As operações de agregação agrupam valores de vários documentos e podem executar várias operações nos dados agrupados para retornar um único resultado.
Tente isto -
collection.aggregate([
{ $unwind: "$items" },
{ $sort: { "items.order": 1 } },
{ $group: { _id: "$_id", items: { $push: "$items" } } }
]);
A agregação a seguir usa o estágio $unwind para gerar um documento para cada elemento na matriz de tamanhos:
Estágio $sort (agregação) do pipeline:- Classifica todos os documentos de entrada e os retorna ao pipeline em ordem ordenada.
O estágio $sort tem o seguinte formulário de protótipo:
{ $sort: { <field1>: <sort order>, <field2>: <sort order> ... } }
Estágio do pipeline $group (agregação):- Agrupa documentos por alguma expressão especificada e envia para o próximo estágio um documento para cada agrupamento distinto. Os documentos de saída contêm um campo _id que contém o grupo distinto por chave. $group não ordena seus documentos de saída.
O estágio $group tem o seguinte formulário de protótipo:
{ $group: { _id: <expression>, <field1>: { <accumulator1> :
<expression1> }, ... } }
Para obter mais referências, consulte este link - https://docs.mongodb .com/manual/reference/method/db.collection.aggregate/