Říká se tomu přirozený řád :
natural orderPořadí, ve kterém databáze odkazuje na dokumenty na disku. Toto je výchozí pořadí řazení. Viz
$naturalaReturn in Natural Order.
To potvrzuje, že je obecně dostanete ve stejném pořadí, jaké jste zadali, ale to není zaručeno – jak jste si všimli.
Návrat v přirozeném pořadí
$naturalparametr vrací položky podle jejich přirozeného pořadí v databázi. Toto uspořádání je interní implementační funkcí a neměli byste se v něm spoléhat na žádnou konkrétní strukturu.Použití indexu
Dotazy, které zahrnují řazení podle
$naturalpříkaz ne použijte indexy ke splnění predikátu dotazu s následující výjimkou:Pokud je predikát dotazu podmínkou rovnosti na_idpole{ _id: <value> }, pak dotaz s řazením podle$naturalobjednávka může používat_idindex.MMAPv1
Přirozené pořadí obvykle odráží pořadí vložení s následující výjimkou pro modul úložiště MMAPv1. U úložiště MMAPv1 přirozené pořadí neodráží pořadí vložení, pokud se dokumenty přemístí kvůli růstu dokumentu nebo operace odstranění uvolní místo, které pak zaberou nově vložené dokumenty.
Stejně jako ve zmíněných dokumentech byste samozřejmě neměli spoléhat na toto výchozí pořadí (Toto uspořádání je funkce interní implementace a neměli byste se spoléhat na žádnou konkrétní strukturu v něm. ).
Pokud potřebujete věci třídit, použijte řešení pro třídění.
V zásadě by následující dvě volání měla vrátit dokumenty ve stejném pořadí (protože výchozí pořadí je $natural ):
db.mycollection.find().sort({ "$natural": 1 })
db.mycollection.find()
Pokud chcete třídit podle jiného pole (např. name ) můžete to udělat:
db.mycollection.find().sort({ "name": 1 })