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

Jak vytvořit vnořené dotazy v MongoDb, které fungují jako vnořené výběrové dotazy SQL

Odpovědí na takové otázky v MongoDB je často denormalizace vašich dat. Pokud potřebujete pouze seznam uživatelů ve skupině, můžete uložit ID uživatele a uživatelské jméno v dokumentu skupiny. V některých ohledech strukturujete databázi podle výsledku, který chcete vidět na obrazovce, místo abyste se ji snažili vložit do nějakého normalizovaného formátu.

Je jasné, že by to fungovalo pouze v případě, že se váš seznam uživatelských skupin (se jmény) vejde do jednoho dokumentu, ale váš současný přístup má také určitá omezení týkající se maximální velikosti skupiny.

Dalším přístupem by bylo uložit skupiny, do kterých uživatel patří, do pole v každém dokumentu „Uživatel“. Přidejte index do tohoto pole a nyní můžete najít uživatele podle skupiny. Vzhledem k tomu, že uživatel pravděpodobně patří do menšího počtu skupin, než kolik je členů ve skupině, může to být nejlepší přístup.

db.user.save({_id:"u1", name:"u1 name", groups:[{_id:"g1", name:"Group One"}, ...]});

Opět můžete uložit název skupiny s jeho _id, abyste mohli okamžitě zobrazit seznam skupin, do kterých uživatel patří, pomocí jediné zpáteční cesty. Samozřejmě, pokud povolíte změnu názvu skupiny, budete muset spustit úlohu na pozadí, abyste mohli opravit všechny tyto kopie názvu.

Také bych použil vestavěný generátor id MongoDB spíše než váš vlastní, má mnoho žádoucích vlastností.



  1. najít dokumenty dílčího pole v meteoru

  2. Časové razítko k dnešnímu dni v php a mongodb

  3. Je v pořádku dotazovat se na MongoDB vícekrát na požadavek?

  4. Čtení, psaní a skladování JSON s uzlem na Heroku