sql >> Databáze >  >> NoSQL >> MongoDB

Jak MongoDB objednává své dokumenty v jedné kolekci?

Říká se tomu přirozený řád :

natural order

Pořadí, ve kterém databáze odkazuje na dokumenty na disku. Toto je výchozí pořadí řazení. Viz $natural a Return 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í

$natural parametr 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 $natural pří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 _id pole { _id: <value> } , pak dotaz s řazením podle $natural objednávka může používat _id index.

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 })


  1. Jak implementovat proud futures pro blokovací hovor pomocí futures.rs a Redis PubSub?

  2. Jak zkontrolovat, zda je index skrytý v MongoDB

  3. MongoDB na počítači se systémem Windows 7:Nelze vytvořit žádné připojení

  4. pipelining vs transakce v redis