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

Złożone sortowanie Mongo?

AKTUALIZACJA: Ta odpowiedź wydaje się nieaktualna; wygląda na to, że niestandardowe sortowanie można w mniejszym lub większym stopniu osiągnąć za pomocą $project funkcja potoku agregacji w celu przekształcenia dokumentów wejściowych przed sortowaniem. Zobacz także odpowiedź @Ari.

Nie sądzę, że jest to możliwe bezpośrednio; dokumentacja sort z pewnością nie wspomina o żadnym sposobie dostarczenia niestandardowej funkcji porównania.

Prawdopodobnie najlepiej zrobisz to w kliencie, ale jeśli naprawdę chcesz to zrobić na serwerze, możesz użyć db.eval() zorganizować uruchomienie sortowania na serwerze (jeśli Twój klient to obsługuje).

Sortowanie po stronie serwera:

db.eval(function() { 
  return db.scratch.find().toArray().sort(function(doc1, doc2) { 
    return doc1.a - doc2.a 
  }) 
});

W porównaniu z równoważnym sortowaniem po stronie klienta:

db.scratch.find().toArray().sort(function(doc1, doc2) { 
  return doc1.a - doc2.b 
});

Zauważ, że możliwe jest również sortowanie za pomocą potoku agregacji i według $orderby operator (tj. oprócz .sort() ), jednak żaden z tych sposobów nie pozwala również na zapewnienie niestandardowej funkcji sortowania.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak poprawić wydajność wstawiania MongoDB

  2. Oblicz średnią pól w osadzonych dokumentach/tablicy

  3. Analizowanie powolnych zapytań w MongoDB

  4. Modelowanie schematu znajomych w manguście?

  5. Mongoose zawsze zwraca pustą tablicę NodeJS