MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como posso classificar por vários campos no mongodb com Perl?


O problema básico aqui é que um "hash" em Perl é ordenado por "chave" por padrão. Para obter a "ordem de inserção" você precisa usar Tie::IxHash do seguinte modo:
use Tie::IxHash;

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

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

Então, quando você usa isso em sua consulta do MongoDB, as chaves são consideradas na ordem em que você as inseriu, em vez de sua ordem lexcial.

De qualquer forma, deveria ter sido ordenado dessa maneira, já que as chaves estão em ordem lexical, mas sugiro que você tenha feito algo errado e precisa estar ciente da ordem de inserção de qualquer maneira.

A outra razão é que "in_stock" não existe ou não é o verdadeiro nome do caminho para o campo. Você precisa especificar o caminho completo para o campo com "notação de ponto" caso contrário, o caminho é inválido.