sql >> Databasteknik >  >> NoSQL >> MongoDB

Vilken är den bästa datastrukturen för att lagra denna data på mongoDB?

Din struktur ser korrekt ut. Du lagrar endast news_id i datafältet och det är en smartare implementering eftersom lagring av hela dokument kommer att orsaka mycket flytt och skrivning av MongoDB varje gång en ny nyhet läggs till i favoriter av användaren.

Anledningen, som du säkert redan vet, är att ett nytt dokument skapas vid varje uppdatering. Referens:http://docs.mongodb.org/ manual/reference/method/db.collection.save/#upsert .

Jag tycker också att du som affärsregel bör begränsa antalet nyheter som kan ställas in som favorit av användaren. Att tillåta den här listan att växa på obestämd tid kommer inte att vara en bra idé för den inbäddade designen.

Om du vill ha ett obegränsat antal favoriter, skapar du bättre en separat samling för det och för att sedan få alla favoriter av en användare använder du operatorerna $match (på användarens id) och $sort (av nyheter) i en aggregeringsfråga för att få den sorterade listan över favoritnyheter för användaren.




  1. Frågar MongoDB att matcha i det första objektet i en array

  2. Integrera Redis till JHipster CacheConfiguration fel

  3. Redis lagringslista inuti hash

  4. Mongodb Atlas:inte auktoriserad på admin att utföra kommandot