Je structuur ziet er goed uit. U slaat alleen news_id op in het gegevensveld en dat is een slimmere implementatie omdat het opslaan van een volledig document veel beweging en schrijven zal veroorzaken door MongoDB telkens wanneer een nieuw nieuws door de gebruiker aan favorieten wordt toegevoegd.
Reden, die u waarschijnlijk al weet, is dat er bij elke update een nieuw document wordt gemaakt. Referentie:http://docs.mongodb.org/ manual/reference/method/db.collection.save/#upsert .
Ook denk ik dat je als bedrijfsregel het aantal nieuwsitems dat door de gebruiker als favoriet kan worden ingesteld, moet beperken. Deze lijst onbeperkt laten groeien, is geen goed idee voor het ingesloten ontwerp.
Als u een onbeperkt aantal favorieten wilt, kunt u daar beter een aparte verzameling voor maken en om vervolgens alle favorieten van een gebruiker te krijgen, gebruikt u $match (op gebruikers-ID) en $sort (van nieuwsitems) operators in een aggregatiequery om krijg de gesorteerde lijst met favoriete nieuwsitems voor de gebruiker.