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

Nejlepší způsob, jak organizovat dílčí dokumenty v Mongo?

Trochu o tom diskutuji zde, nejprve si přečtěte toto:https://stackoverflow.com/a/27285313/ 68567

Pro váš případ je pravděpodobně nejlepší možnost 3 (uchování některých dat ve vašem primárním modelu). Klíčem je Vyhnout se neomezenému růstu pole .

To souvisí s tím, jak Mongodb přiděluje dokumenty. http://docs.mongodb.org/manual/core/storage/ "Každý dokument v MongoDB je uložen v záznamu, který obsahuje samotný dokument a další prostor nebo výplň, která umožňuje dokumentu růst v důsledku aktualizací."

Když uzel přiděluje nové dokumenty, přiděluje prostor na základě velikosti vloženého dokumentu a velikostí dokumentů, které již jsou ve vaší kolekci. (Více se dočtete v odkazu výše.) Pokud máte některé dokumenty řádově větší než ostatní, pravděpodobně to povede k fragmentaci.

Způsob, jak zabránit tomu, aby bylo v poli poddokumentů „komentářů“ příliš mnoho dokumentů, jsou příkazy $push a $slice.http://docs.mongodb.org/manual/reference/operator/update/slice/

Uložte tedy „nejnovějších 5“ a zobrazte je při prvním načtení položky. (Nebo nejstarší nebo jakákoli jiná kritéria třídění, která chcete použít.) Poté uživateli poskytněte způsob, jak načíst další, což provede samostatnou zpáteční cestu ke kolekci, která je má všechna.




  1. 20 Pozoruhodný rozdíl mezi Hadoopem 2.x a Hadoopem 3.x

  2. Ignorovat nedefinované hodnoty, které jsou předány v parametru objektu dotazu pro funkci Najít Mongoose?

  3. Podmíněně zahrnout fáze potrubí agregace

  4. Mohu snadno vrátit všechna pole vnořeného dokumentu jako pole v dokumentu nejvyšší úrovně pomocí agregačního rámce?