К сожалению, sort(for queries)/orderBy(for aggregations)
соответствует синтаксису:
<field1>: <sort order>;
Таким образом, вы не можете повторить то же поведение, что и в SQL.Решение для вас, вероятно, состоит в том, чтобы передать orderBy / sort в фильтрах и снова запросить эти результаты.
Другое решение - использовать агрегации, но вы должны указать, какие поля из продуктов вы хотите иметь вконечный результат:
db.products.aggregate( [ { $group : { _id : "$size", products: { $push: "$name" } } } ] )
Ответ будет выглядеть следующим образом:
{"_id": "L", "products": []}{"_id": "M", "products": ["a", "b"]}
Другой пример агрегации, который сначала фильтрует продукты, а затем группирует их:
db.products.aggregate([
{ $match: { size: { $in: ["M", "L"] } } },
{ $group: { _id: "$size", products: { $push: {name: "$name", size:"$size"} } } }
]);
// { "_id" : "M", "products" : [ { "name" : "a2", "size" : "M" } ] }
// { "_id" : "L", "products" : [ { "name" : "a1", "size" : "L" }, { "name" : "a3", "size" : "L" } ] }