sql >> Databáze >  >> NoSQL >> MongoDB

Jak mohu třídit podle více polí v mongodb pomocí Perlu?

Základní problém je, že „hash“ v Perlu je ve výchozím nastavení řazen podle „klíče“. Abyste získali „pořadí vložení“, musíte použít Tie::IxHash takto:

use Tie::IxHash;

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

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

Když to potom použijete ve svém dotazu MongoDB, klíče jsou uvažovány v pořadí, v jakém jste je vložili, nikoli v jejich lexikálním pořadí.

Stejně to tak mělo být, protože klíče jsou v lexikálním pořadí, ale navrhuji, že jste udělali něco špatně a stejně musíte znát pořadí vložení.

Jiným důvodem je, že „in_stock“ neexistuje nebo není skutečným názvem cesty k poli. Úplnou cestu k poli musíte zadat pomocí "dot notation" jinak je cesta neplatná.




  1. Jaká jsou pravidla pluralizace Mongoose (Nodejs)?

  2. Jak opravit Lopsided Hash Slots v Redis

  3. Redis Connection přes socket na Node.js

  4. Mongodump získává prázdné složky