You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Phalcon的Collection::aggregate()的$sort中设置匈牙利语locale

如何在MongoDB聚合的$sort阶段设置匈牙利语(hu)排序规则

没问题!要让你的聚合管道按照匈牙利语的排序顺序(比如aábc...z而非abc...zá)排列,你需要用到MongoDB的**collation(排序规则)**功能,指定locale: 'hu'即可。下面针对你的PHP聚合管道给出两种可行的修改方案:

方式1:给整个聚合操作设置全局collation

这种方式会让整个聚合过程中所有涉及排序的逻辑都遵循匈牙利语规则,最适合你的场景:

$pipeline = [
    [
        '$match' => [
            '$and' => [
                ['aktiv' => true],
                ['aktivGondozott' => true]
            ]
        ]
    ],
    [
        '$project' => [
            '_id' => 1,
            'alapadatok' => ['$arrayElemAt' => ['$alapadatok', 0]]
        ]
    ],
    [
        '$project' => [
            '_id' => 1,
            'teljesNev' => '$alapadatok.szuletesiTeljesNev',
            'szuletesiDatum' => '$alapadatok.szuletesiIdo'
        ]
    ],
    [
        '$sort' => ['teljesNev' => 1]
    ],
    [
        '$skip' => 380
    ],
    [
        '$limit' => 20
    ]
];

// 在aggregate方法的第二个参数中添加collation配置
$result = $collection->aggregate($pipeline, [
    'collation' => [
        'locale' => 'hu'
    ]
]);

方式2:仅在$sort阶段指定collation

如果你只需要这个特定的$sort阶段使用匈牙利语排序,也可以直接在该阶段内附加collation配置(注意:要求MongoDB版本≥3.4):

// 修改后的$sort阶段(替换原管道中的第3个元素)
[
    '$sort' => ['teljesNev' => 1],
    '$collation' => ['locale' => 'hu']
]

注意事项

  • 确保你的MongoDB版本至少是3.4,collation功能是从这个版本开始引入的。
  • 匈牙利语的collation会自动处理带重音的字符排序,完全符合你需要的aábc...z顺序。

内容的提问来源于stack exchange,提问作者Apuka73

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:23:33