sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur kan jag sortera efter flera fält i mongodb med Perl?

Det grundläggande problemet här är att en "hash" i Perl sorteras efter "nyckel" som standard. För att få "insättningsordningen" måste du använda Tie::IxHash enligt följande:

use Tie::IxHash;

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

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

När du sedan använder detta i din MongoDB-fråga, betraktas nycklarna i den ordning du infogade dem, snarare än deras lexciala ordning.

Det borde ha ordnats på det sättet i alla fall eftersom nycklarna är i lexikal ordning, men jag föreslår att du gjorde något fel och att du ändå måste vara medveten om insättningsordningen.

Orsaken annars är att "in_stock" inte existerar, eller inte är det sanna sökvägsnamnet till fältet. Du måste ange hela sökvägen till fältet med "dot notation" annars är sökvägen ogiltig.




  1. MongoDB / Express - Hur man byter databas efter anslutning via connect()

  2. MongoDB:s prestanda på aggregeringsfrågor

  3. MongoDB elemmatchar flera element i array

  4. Hur ställer jag in standardvärdet för ett heltal i mongodb?