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

Jak MongoDB porządkuje swoje dokumenty w jednej kolekcji?

Nazywa się to porządkiem naturalnym :

natural order

Kolejność, w jakiej baza odwołuje się do dokumentów na dysku. To jest domyślny porządek sortowania. Zobacz $natural i Return in Natural Order .

Potwierdza to, że ogólnie otrzymujesz je w tej samej kolejności, w jakiej je wstawiłeś, ale nie jest to gwarantowane – jak zauważyłeś.

Zwrot w naturalnym porządku

$natural parametr zwraca pozycje zgodnie z ich naturalną kolejnością w bazie danych. Ta kolejność jest wewnętrzną funkcją implementacji i nie należy polegać na żadnej konkretnej strukturze w jej obrębie.

Użycie indeksu

Zapytania zawierające sortowanie według $natural zamówienie nie użyj indeksów, aby wypełnić predykat zapytania, z następującym wyjątkiem:Jeśli predykat zapytania jest warunkiem równości w _id pole { _id: <value> } , a następnie zapytanie z sortowaniem według $natural zamówienie może używać _id indeks.

MMAPv1

Zazwyczaj kolejność naturalna odzwierciedla kolejność wstawiania z następującym wyjątkiem dla aparatu magazynu MMAPv1. W przypadku silnika pamięci masowej MMAPv1 kolejność naturalna nie odzwierciedla kolejności wstawiania, jeśli dokumenty przenoszą się z powodu rozrostu dokumentów lub operacje usuwania zwalniają miejsce, które jest następnie zajmowane przez nowo wstawiane dokumenty.

Oczywiście, tak jak we wspomnianych dokumentach, nie polegać na tej domyślnej kolejności (Ta kolejność jest wewnętrzną funkcją implementacji i nie należy polegać na żadnej określonej w niej strukturze). ).

Jeśli chcesz posortować rzeczy, skorzystaj z rozwiązań sortowania.

Zasadniczo, następujące dwa wywołania powinny zwrócić dokumenty w tej samej kolejności (ponieważ domyślna kolejność to $natural ):

db.mycollection.find().sort({ "$natural": 1 })
db.mycollection.find()

Jeśli chcesz posortować według innego pola (np. name ) możesz to zrobić:

db.mycollection.find().sort({ "name": 1 })


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $setIsSubset

  2. Mongodb ustawia unikalne pole

  3. Średnie kroczące w ramach agregacji MongoDB?

  4. MongoDB $literal

  5. Jaka jest różnica między MongoTemplate i MongoRepository firmy Spring Data?