ここでの基本的な問題は、Perlの「ハッシュ」がデフォルトで「キー」の順に並べられていることです。 「挿入順序」を取得するには、 Tie ::IxHash<を使用する必要があります。 / code>
次のように:
use Tie::IxHash;
my %sort;
tie ( %sort, 'Tie::IxHash' );
my $sort = \%sort;
$sort = { "is_instock" => -1, "ua" => 1 };
次に、これをMongoDBクエリで使用すると、キーは、字句の順序ではなく、挿入した順序で考慮されます。
キーは辞書式順序であるため、とにかくそのように順序付けられているはずですが、何か間違ったことをしたので、とにかく挿入順序に注意する必要があります。
それ以外の理由は、「in_stock」が存在しないか、フィールドへの実際のパス名ではないことです。 "ドット表記"<を使用して、フィールドへのフルパスを指定する必要があります。 / a> それ以外の場合、パスは無効です。