Я не верю, что это нормально в MongoDB и приведет к неэффективным операциям с базами данных.Это связано с тем, что эти две коллекции не связаны, поэтому вам необходимо объединить их.Поскольку это не типичная операция MongoDB, это будет дорогостоящий процесс.
Далее, для каждого нового вопроса эту дорогостоящую операцию (в терминах MongoDB) необходимо будет повторить снова.
Насколько я понимаю, вам нужно взять заданную разницу между всеми _id
вопросами и всеми questionId
для конкретного игрока _id
.
Вместо выполнения всей операции в MongoDB,Я бы посоветовал вам:
- Когда приложение запустится, выполнить запрос для всех вопросов
_id
и сохранить их в переменной. - Когда новый пользователь входит в систему,запрос для всех
questionId
для пользователя. - Выполните заданную разницу между (1) и (2) в приложении, выберите один случайным образом, затем запросите этот точный вопрос
_id
из базы данных. - Обновите коллекцию
PlayedQuestions
.
Таким образом, когда пользователь хочет получить следующий вопрос, вам не нужно каждый раз делать дорогие объединения.Информация уже была кэширована в приложении.