Het fundamentele probleem hier is dat een "hash" in Perl standaard op "key" wordt geordend. Om de "volgorde van invoeging" te krijgen, moet je Tie::IxHash
als volgt:
use Tie::IxHash;
my %sort;
tie ( %sort, 'Tie::IxHash' );
my $sort = \%sort;
$sort = { "is_instock" => -1, "ua" => 1 };
Wanneer u dit vervolgens in uw MongoDB-query gebruikt, worden de sleutels beschouwd in de volgorde waarin u ze hebt ingevoegd, in plaats van in hun lexciale volgorde.
Het had hoe dan ook op die manier moeten worden geordend, aangezien de toetsen in lexicale volgorde staan, maar ik stel voor dat je iets verkeerd hebt gedaan en je toch op de hoogte moet zijn van de invoegvolgorde.
De andere reden is dat "in_stock" niet bestaat, of niet de echte padnaam naar het veld is. Je moet het volledige pad naar het veld specificeren met "dot notation" anders is het pad ongeldig.