sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo puedo ordenar por múltiples campos en mongodb con Perl?

El problema básico aquí es que un "hash" en Perl está ordenado por "clave" de forma predeterminada. Para obtener el "orden de inserción", debe usar Tie::IxHash de la siguiente manera:

use Tie::IxHash;

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

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

Luego, cuando usa esto en su consulta MongoDB, las claves se consideran en el orden en que las insertó, en lugar de su orden léxico.

De todos modos, debería haber sido ordenado de esa manera ya que las claves están en orden léxico, pero sugiero que hiciste algo mal y debes estar al tanto del orden de inserción de todos modos.

De lo contrario, el motivo es que "en_stock" no existe o no es el verdadero nombre de la ruta de acceso al campo. Debe especificar la ruta completa al campo con "dot notation" de lo contrario, la ruta no es válida.