MongoDB聚合运算符:$sortArray
文章目录
$sortArray聚合运算符根据指定的排序规则对数组元素进行排序。
语法
$sortArray: {
input: <array>,
sortBy: <sort spec>
}
input:为可解析为数组的表达式,如果表达式字段缺失、为null或undefined,则返回null,如果表达式为其他非数组的值,则返回错误。sortBy:文档类型,用于指定排序方式。
使用
$sortArray表达式根据sortBy规范对输入数组进行排序。$sortArray的语法和语义与通过$sort修改的$push操作中的行为相同。
根据文档字段进行排序
如果数组元素是文档,则可以按文档字段排序,指定字段名称和排序方向:升序 (1) 或降序 (-1)。
{
input: <array-of-documents>,
sortBy: {
<document-field>: <sort-direction> }
}
根据值排序
要按值对整个数组进行排序,或按非文档的数组元素进行排序,需要指定输入数组并在 sortBy 参数中指定 1 表示升序排序,或指定 -1 表示降序排序。
{
input: <array-of-documents>,
sortBy: <sort-direction>
}
注意事项
- 对于排序的键值,不会进行隐式数组遍历。
- 不支持位置运算符,像
"values.1"这样的字段名称表示value数组中名为"1"的子字段,而不是引用数组中的第1个元素。 - 当整个数组排序时,排序按字典顺序,与聚合
$sort阶段的行为有所不同。 - 当数组按字段排序时,任何不具有指定字段的文档或标量会被平均排序,也就是结果的排序顺序不确定。
null和缺失值按照同等顺序排序。$sortArray的排序是不稳定的,不应依赖其排序算法的稳定性。
举例
使用下面的脚本创建team集合:
db.engineers.insertOne(
{
"team":
[
{
"name": "pat",
"age": 30,
"address": {
"street": "12 Baker St", "city": "London" }
},
{
"name": "dallas",
"age": 36,
"address": {
"street": "12 Cowper St", "city": "Palo Alto" }
},
{
"name": "charlie",
"age": 42,
"address": {
"street": "12 French St", "city": "New Brunswick" }
}
]
}

最低0.47元/天 解锁文章
1325

被折叠的 条评论
为什么被折叠?



