如何使用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”不存在,或者不是该字段的真实路径名。您需要使用“点符号”指定字段的完整路径,否则该路径无效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句