Osvědčeným postupem s MongoDB (a dalšími nerelačními datovými úložišti) je modelovat svá data tak, aby bylo snadné je používat/dotazovat se ve vaší aplikaci. Ve vašem případě byste mohli zvážit trochu denormalizaci struktury a uložit hodnocení přímo do sbírky blogů, takže blog může vypadat nějak takto:
{
title: "My New Post",
body: "Here's my new post. It is great. ...",
likes: 20,
dislikes: 5,
...
rates: [
{ client_id: (id of client), rate: 5 },
{ client_id: (id of another client), rate: 3 },
{ client_id: (id of a third client), rate: 10 }
]
}
Myšlenka je taková, že objekty v rates
pole obsahuje všechna data, která potřebujete k zobrazení položky blogu, včetně hodnocení, přímo v jediném dokumentu. Pokud se také potřebujete dotazovat na sazby jiným způsobem (např. najít všechna hodnocení od uživatele X) a web je náročný na čtení, můžete zvážit také ukládání dat do Rates
sbírku jako nyní. Jistě, data jsou na dvou místech a je těžší je aktualizovat, ale po analýze aplikace a způsobu, jakým k vašim datům přistupuje, to může být celková výhra.
Všimněte si, že indexy můžete použít hluboko do struktury dokumentu, takže například můžete indexovat News.rates.client_id
a poté můžete rychle najít jakékoli dokumenty v News
kolekce, kterou ohodnotil konkrétní uživatel.