Основният проблем тук е, че "хеш" в Perl е подреден по "ключ" по подразбиране. За да получите „реда на вмъкване“, трябва да използвате Tie::IxHashкод>
както следва:
use Tie::IxHash;
my %sort;
tie ( %sort, 'Tie::IxHash' );
my $sort = \%sort;
$sort = { "is_instock" => -1, "ua" => 1 };
След това, когато използвате това във вашата MongoDB заявка, ключовете се разглеждат в реда, в който сте ги вмъкнали, а не в техния лексиален ред.
Така или иначе трябваше да бъде подредено по този начин, тъй като ключовете са в лексикален ред, но предполагам, че сте направили нещо нередно и така или иначе трябва да сте наясно с реда на вмъкване.
Другата причина е, че „in_stock“ не съществува или не е истинското име на пътя към полето. Трябва да посочите пълния път до полето с "нотация с точки" в противен случай пътят е невалиден.