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

mongodb porządek sortowania na _id

Aby nieco rozwinąć to, co powiedział Andre:

Ponieważ znacznik czasu ObjectID jest tylko do drugiego, można łatwo utworzyć dwa (lub więcej) identyfikatory ObjectID z tą samą wartością znacznika czasu (pierwsze 4 bajty). Gdyby zostały utworzone na tej samej maszynie (machine ID - kolejne 3 bajty), przez ten sam proces (PID - kolejne 2 bajty), to jedyne, co je odróżnia, to pole "inc", ostatnie 3 bajty na końcu.

Aktualizacja:styczeń 2020 r.

Ta odpowiedź jest nadal popularna, więc warto ją trochę zaktualizować. Specyfikacja ObjectID ewoluowała od czasu napisania tej odpowiedzi 8 lat temu, a 5 bajtów po znaczniku czasu jest teraz po prostu losowych, co znacznie zmniejszy prawdopodobieństwo jakichkolwiek kolizji. Ostatnie trzy bajty są nadal przyrostowe, ale są inicjowane losową wartością, aby rozpocząć, ponownie zmniejszając prawdopodobieństwo kolizji. ObjectID zawiera teraz mniej kontekstu (nie można łatwo stwierdzić, gdzie został wygenerowany i przez jaki proces), ale przypuszczam, że informacje nie były używane w żaden sensowny sposób i zostały przestarzałe na rzecz lepszej randomizacji identyfikatora.

Zakończ aktualizację

Zobacz pełną specyfikację:

https://docs.mongodb.com/manual/reference/method/ObjectId/#ObjectIDs-BSONObjectIDSpecification

To pole „inc” jest albo polem stale rosnącym (wtedy można rozsądnie oczekiwać, że sortowanie będzie w kolejności wstawiania/utworzenia) albo wartością losową (wtedy prawdopodobnie unikatową, ale nie uporządkowaną), zakładając oczywiście, że specyfikacja jest zaimplementowana poprawnie . Zwróć uwagę, że identyfikatory ObjectID mogą być generowane przez sterownik lub aplikację (lub rzeczywiście ręcznie), a nie przez samą MongoDB, więc jeśli nie masz pełnej kontroli nad sposobem ich generowania, może mieć zastosowanie dowolne lub wszystkie z powyższych.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb się nie uruchamia

  2. Jak utworzyć indeks o określonej nazwie w MongoDB?

  3. MongoDB:Używanie dopasowania ze zmiennymi dokumentu wejściowego

  4. Uruchamianie MongoDB z Ops Manager

  5. Mangusta nie zapisuje zagnieżdżonego obiektu