sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik sorteren op meerdere velden in mongodb met Perl?

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.




  1. verbinding maken met Mongo DB met mangoestversie (4.11.0)

  2. MongoDB op EC2-server of AWS SimpleDB?

  3. StackExchange Redis ChannelPrefix Geen bereiksleutels

  4. JBAS011445:Kan adapter voor persistentieprovider 'org.hibernate.ogm.jpa.HibernateOgmPersistence' niet ophalen