Dokumenty MongoDB są obecnie ograniczone do maksymalnie 16 MB, więc zakładając, że obliczenia Gilberta są dokładne, nie będziesz w stanie przechowywać wszystkich 6 milionów user_id
s w Post
dokument.
Możesz jednak rozważyć przechowywanie głosów w User
zamiast tego dokumentu (np. post_id
s, na które głosował dany użytkownik). Jest znacznie mniej prawdopodobne, że użytkownik zagłosuje na 6 milionów różnych postów, więc w ten sposób nie osiągniesz limitu rozmiaru tak szybko.
Inny sposób radzenia sobie z tym:jeśli spodziewasz się, że wiele głosów na konkretny post, możesz chcieć przechowywać głosy poza Post
dokumenty w oddzielnej kolekcji i wykonaj dodatkowe zapytanie, podobne do tabeli JOIN w języku SQL:
user_votes { user_id: ObjectId(...), post_id: ObjectId(...), vote:-1 }
i utwórz indeks złożony na (user_id, post_id).