MongoDBドキュメントは現在最大16MBに制限されているため、Gilbertの計算が正確であると仮定すると、600万のuser_id
すべてを保存することはできません。 s Post
資料。
ただし、投票をUser
に保存することを検討できます。 代わりにドキュメント(つまり、post_id
特定のユーザーが投票したもの)。ユーザーが600万の異なる投稿に投票する可能性ははるかに低いため、この方法ではサイズ制限にすぐに到達することはありません。
これを処理する別の方法:特定の投稿に多数の投票が予想される場合は、投票をPost
の外部に保存することをお勧めします。 別のコレクションにあるドキュメントを作成し、SQL形式の多対多のJOINテーブルと同様に、追加のクエリを実行します。
user_votes { user_id: ObjectId(...), post_id: ObjectId(...), vote:-1 }
(user_id、post_id)に複合インデックスを作成します。