在MongoDB中,如果你想要对嵌套数组(子文档)进行倒序排序,可以使用聚合管道中的 $unwind
、$sort
和 $group
等操作符来实现。以下是一个示例,展示如何对嵌套数组进行倒序排序。
假设你有一个集合 orders
,其中每个文档包含一个 items
数组,数组中的每个元素是一个子文档,包含 name
和 price
字段。你想要对每个订单中的 items
数组按照 price
字段进行倒序排序。
{
"_id": 1,
"orderNumber": "ORD123",
"items": [
{ "name": "Item A", "price": 100 },
{ "name": "Item B", "price": 200 },
{ "name": "Item C", "price": 50 }
]
}
db.orders.aggregate([
// 展开 items 数组
{ $unwind: "$items" },
// 按照 price 字段进行倒序排序
{ $sort: { "items.price": -1 } },
// 重新分组,将排序后的 items 数组重新组合
{
$group: {
_id: "$_id",
orderNumber: { $first: "$orderNumber" },
items: { $push: "$items" }
}
}
])
items
数组展开,使得每个子文档成为一个独立的文档。items.price
字段进行倒序排序(-1
表示倒序)。orderNumber
)。执行上述聚合管道后,items
数组将按照 price
字段进行倒序排序。结果可能如下所示:
{
"_id": 1,
"orderNumber": "ORD123",
"items": [
{ "name": "Item B", "price": 200 },
{ "name": "Item A", "price": 100 },
{ "name": "Item C", "price": 50 }
]
}
$sort
阶段指定这些字段。通过这种方式,你可以轻松地对MongoDB中的嵌套数组进行倒序排序。