MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come posso ordinare per più campi in mongodb con Perl?

Il problema di base qui è che un "hash" in Perl è ordinato per "chiave" per impostazione predefinita. Per ottenere l'"ordine di inserimento" è necessario utilizzare Tie::IxHash come segue:

use Tie::IxHash;

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

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

Quindi, quando lo usi nella tua query MongoDB, le chiavi vengono considerate nell'ordine in cui le hai inserite, piuttosto che nel loro ordine lessicale.

Avrebbe dovuto essere ordinato comunque in questo modo poiché le chiavi sono in ordine lessicale, ma ti suggerisco di aver sbagliato qualcosa e devi comunque essere a conoscenza dell'ordine di inserimento.

L'altro motivo è che "in_stock" non esiste o non è il vero nome del percorso del campo. Devi specificare il percorso completo del campo con "dot notation" altrimenti il ​​percorso non è valido.