MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment puis-je trier par plusieurs champs dans mongodb avec Perl ?

Le problème de base ici est qu'un "hachage" en Perl est classé par "clé" par défaut. Afin d'obtenir "l'ordre d'insertion", vous devez utiliser Tie::IxHash comme suit :

use Tie::IxHash;

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

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

Ensuite, lorsque vous l'utilisez dans votre requête MongoDB, les clés sont considérées dans l'ordre dans lequel vous les avez insérées, plutôt que dans leur ordre lexical.

Il aurait dû être ordonné de toute façon puisque les clés sont dans l'ordre lexical, mais je suggère que vous ayez fait quelque chose de mal et que vous deviez de toute façon être conscient de l'ordre d'insertion.

Sinon, la raison est que "in_stock" n'existe pas ou n'est pas le vrai nom de chemin vers le champ. Vous devez spécifier le chemin complet vers le champ avec "dot notation" sinon le chemin n'est pas valide.