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

MongoDB:Vložení uživatelů do komentářů

Můžete se vyhnout N+1 -problém stovek požadavků pomocí $in -dotazy. Zvažte toto:

Post {
  PosterId: ObjectId
  Text: string
  Comments: [ObjectId, ObjectId, ...] // option 1
}

Comment {
  PostId: ObjectId // option 2 (better)
  Created: dateTime,
  AuthorName: string,
  AuthorId: ObjectId,
  Text: string
}

Nyní můžete najít komentáře k příspěvkům s $in dotaz a také můžete snadno najít všechny komentáře konkrétního autora.

Samozřejmě můžete také uložit komentáře jako vložené pole v příspěvku a provést $in při načítání komentářů se dotazujte na informace o uživateli. Tímto způsobem nemusíte denormalizovat uživatelská jména a přesto nepotřebujete stovky dotazů.

Pokud se rozhodnete denormalizovat uživatelská jména, budete muset aktualizovat všechny komentáře, které kdy daný uživatel učinil, když uživatel změní, např. jeho jméno. Na druhou stranu, pokud k takovým operacím nedochází příliš často, neměl by to být velký problém. Nebo je možná ještě lepší uložit jméno, které měl uživatel při vytváření komentáře, v závislosti na vašich požadavcích.

Obecný problém s vkládáním je, že různé zapisovače budou zapisovat do stejného objektu , takže budete muset použít atomové modifikátory (například $push ). To je někdy těžší použít s mappery (neznám však mongoalchemii) a obecně méně flexibilní.



  1. Proveditelnost spuštění MongoDB na Linode 512 VPS?

  2. ArgumentException:Neplatné klíčové slovo „mongodb+srv://test:[email protected]“ v MongoDB + Unity2D – Live MongoDB se nepřipojuje

  3. Najděte body poblíž LineString v mongodb seřazené podle vzdálenosti

  4. Přepnout booleovskou hodnotu vnořených dokumentů