Отрицательный Внутренний Присоединиться к Mongodb - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь создать API с MongoDB, но я застрял на этом этапе ...

У меня есть 2 таблицы

Вопросы:

  • _id

  • вопрос

  • ответы

  • right_answer

PlayedQuestions:

  • _id

  • userId

  • questionId

  • создалAt

Поэтому, исходя из этого, мне нужно создать запрос для выбора вопроса, которыйконкретный пользователь раньше не играл на основе PlayQuestions (questionId и userId) и случайно!

Так что если у вас есть идеи, которые помогут мне создать его, спасибо!

1 Ответ

0 голосов
/ 26 октября 2018

Я не верю, что это нормально в MongoDB и приведет к неэффективным операциям с базами данных.Это связано с тем, что эти две коллекции не связаны, поэтому вам необходимо объединить их.Поскольку это не типичная операция MongoDB, это будет дорогостоящий процесс.

Далее, для каждого нового вопроса эту дорогостоящую операцию (в терминах MongoDB) необходимо будет повторить снова.

Насколько я понимаю, вам нужно взять заданную разницу между всеми _id вопросами и всеми questionId для конкретного игрока _id.

Вместо выполнения всей операции в MongoDB,Я бы посоветовал вам:

  1. Когда приложение запустится, выполнить запрос для всех вопросов _id и сохранить их в переменной.
  2. Когда новый пользователь входит в систему,запрос для всех questionId для пользователя.
  3. Выполните заданную разницу между (1) и (2) в приложении, выберите один случайным образом, затем запросите этот точный вопрос _id из базы данных.
  4. Обновите коллекцию PlayedQuestions.

Таким образом, когда пользователь хочет получить следующий вопрос, вам не нужно каждый раз делать дорогие объединения.Информация уже была кэширована в приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...