$sortArray(数组表达式)
适用对象: MongoDB vCore
$sortArray
运算符用于对数组的元素进行排序。 当需要基于特定字段或条件对文档中的数组进行排序时,此运算符特别有用。 它可以应用于嵌入式文档数组或简单的值数组。
语法
$sortArray
运算符的语法如下所示:
{
$sortArray: {
input: <arrayExpression>,
sortBy: <sortSpecification>
}
}
参数
说明 | |
---|---|
input |
要排序的数组。 |
sortBy |
指定排序顺序。 这可以是单个字段,也可以是具有相应排序顺序的多个字段(1 表示升序,-1 表示降序)。 |
示例
让我们了解 stores
数据集中的示例 json 的用法。
{
"_id": "d3c9df51-41bd-4b4e-a26b-b038d9cf8b45",
"location": {
"lat": -67.7571,
"lon": 97.2505
},
"sales": {
"totalSales": 149849,
"salesByCategory": [
{
"categoryName": "DJ Speakers",
"totalSales": 36972
},
{
"categoryName": "DJ Headphones",
"totalSales": 12877
},
{
"categoryName": "Music Accessories",
"totalSales": 40000
},
{
"categoryName": "DJ Accessories",
"totalSales": 60000
}
]
},
"tag": [
"#ShopLocal",
"#FashionStore",
"#SeasonalSale",
"#FreeShipping",
"#MembershipDeals"
]
}
示例 1:对嵌入文档数组进行排序
示例查询根据 totalSales
按降序对每个文档中的 sales.salesByCategory
数组进行排序。
db.stores.aggregate([
{$match: {"_id": "d3c9df51-41bd-4b4e-a26b-b038d9cf8b45"} }
, {
$project: {
sortedSalesByCategory: {
$sortArray: {
input: "$sales.salesByCategory",
sortBy: { totalSales: -1 }
}
}
}
}
])
该查询返回示例 json 的按 totalSales
排序的数组元素。
{
"_id": "d3c9df51-41bd-4b4e-a26b-b038d9cf8b45",
"sortedSalesByCategory": [
{ "categoryName": "DJ Accessories", "totalSales": 60000 },
{ "categoryName": "Music Accessories", "totalSales": 40000 },
{ "categoryName": "DJ Speakers", "totalSales": 36972 },
{ "categoryName": "DJ Headphones", "totalSales": 12877 }
]
}
相关内容
- 查看用于从 MongoDB 迁移到 Azure Cosmos DB for MongoDB (vCore) 的选项 - 详细了解与 MongoDB 的功能兼容性。