-1, "ua" => 1}; my $resultSet =-6ren">
gpt4 book ai didi

mongodb - 如何使用 Perl 对 mongodb 中的多个字段进行排序?

转载 作者:可可西里 更新时间:2023-11-01 09:42:08 26 4
gpt4 key购买 nike

如何使用 Perl 在 MongoDB 中进行多重排序?

我目前的做法是这样的:

my $sort = {"is_instock" => -1, "ua" => 1};
my $resultSet = $collection
->find({moderated => 1, markers => {'$all'=>$obj->{markers}}})
->sort($sort)
->limit(25);
@{$result} = $resultSet->all;

但是,我得到了按一个字段 (ua) 排序的数组。我做错了什么?

最佳答案

这里的基本问题是 Perl 中的“散列”默认按“键”排序。为了获得“插入顺序”,您需要使用 Tie::IxHash如下:

use Tie::IxHash;

my %sort;
tie ( %sort, 'Tie::IxHash' );

my $sort = \%sort;
$sort = { "is_instock" => -1, "ua" => 1 };

然后当您在 MongoDB 查询中使用它时,键将按照您插入它们的顺序考虑,而不是它们的词法顺序。

它无论如何都应该这样排序,因为键是按词法顺序排列的,但我建议你做错了什么,无论如何你都需要知道插入顺序。

否则原因是“in_stock”不存在,或者不是该字段的真实路径名。您需要使用 "dot notation" 指定字段的完整路径否则路径无效。

关于mongodb - 如何使用 Perl 对 mongodb 中的多个字段进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32967038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com