MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak mogę sortować według wielu pól w mongodb za pomocą Perla?

Podstawowym problemem jest to, że "hasz" w Perlu jest domyślnie porządkowany według "klucza". Aby uzyskać „kolejność wstawiania”, musisz użyć Tie::IxHash w następujący sposób:

use Tie::IxHash;

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

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

Następnie, gdy użyjesz tego w zapytaniu MongoDB, klucze są uwzględniane w kolejności, w jakiej zostały wstawione, a nie w kolejności leksykalnej.

Powinno to być uporządkowane w ten sposób, ponieważ klucze są w porządku leksykalnym, ale sugeruję, że zrobiłeś coś złego i i tak musisz zdawać sobie sprawę z kolejności wstawiania.

Innym powodem jest to, że „in_stock” nie istnieje lub nie jest prawdziwą nazwą ścieżki do pola. Musisz określić pełną ścieżkę do pola za pomocą "notacji kropkowej" w przeciwnym razie ścieżka jest nieprawidłowa.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb:Znajdź wszystkie dokumenty, w których co najmniej jeden element tablicy nie pasuje?

  2. connect nie jest funkcją podczas łączenia się z mongodb

  3. Jak uzyskać usunięty dokument w MongoDB?

  4. otrzymuję następujący błąd podczas łączenia się z serwerem mongodb

  5. Jak tworzyć indeksy bez rozróżniania wielkości liter w MongoDB?