La tua struttura sembra corretta. Stai memorizzando solo news_id nel campo dati e questa è un'implementazione più intelligente perché la memorizzazione di un documento completo causerà molti spostamenti e scrittura da parte di MongoDB ogni volta che una nuova notizia viene aggiunta ai preferiti dall'utente.
Il motivo, che probabilmente già conosci, è che ad ogni aggiornamento viene creato un nuovo documento. Riferimento:http://docs.mongodb.org/ manual/reference/method/db.collection.save/#upsert .
Inoltre, penso che come regola aziendale dovresti limitare il numero di notizie che possono essere impostate come preferite dall'utente. Consentire a questo elenco di crescere indefinitamente non sarà una buona idea per il design incorporato.
Nel caso in cui desideri un numero illimitato di preferiti, è meglio creare una raccolta separata per questo e quindi per ottenere tutti i preferiti da un utente utilizzare gli operatori $match (sull'ID utente) e $sort (di notizie) in una query di aggregazione per ottenere l'elenco ordinato delle notizie preferite per l'utente.