あなたの構造は正しく見えます。データフィールドにはnews_idのみを保存します。完全なドキュメントを保存すると、ユーザーが新しいニュースをお気に入りに追加するたびに、MongoDBによる多くの移動と書き込みが発生するため、これはよりスマートな実装です。
おそらくすでにご存知の理由は、更新のたびに新しいドキュメントが作成されるためです。参照: http://docs.mongodb.org/ manual / reference / method / db.collection.save /#upsert 。
また、ビジネスルールとして、ユーザーがお気に入りとして設定できるニュースアイテムの数を制限する必要があると思います。このリストを無期限に拡張できるようにすることは、組み込み設計にとっては良い考えではありません。
無制限の数のお気に入りが必要な場合は、そのための個別のコレクションを作成してから、ユーザーがすべてのお気に入りを取得するには、集計クエリで$ match(ユーザーのID)および$ sort(ニュースアイテムの)演算子を使用します。ユーザーのお気に入りのニュースアイテムの並べ替えられたリストを取得します。