负内部加入Mongodb

时间:2018-10-24 19:38:56

标签: mongodb inner-join

我正在尝试使用MongoDB构建API,但此时此刻我被困住了...

我有2张桌子

问题:

  • _id

  • 问题

  • 答案

  • right_answer

播放的问题:

  • _id

  • userId

  • questionId

  • createdAt

因此,假设我需要创建一个请求,以基于playQuestions(questionId和userId)随机选择一个特定用户之前没有玩过的问题!

因此,如果您有一些想法可以帮助我进行构建, 谢谢!

1 个答案:

答案 0 :(得分:1)

我不认为这在MongoDB中是很自然的事情,并且会导致数据库操作效率低下。这是因为这两个集合是不相关的,所以您需要将它们集合在一起。由于这不是典型的MongoDB操作,因此这将是一个昂贵的过程。

此外,对于每个新问题,都需要再次重复执行此昂贵的操作(以MongoDB术语表示)。

据我了解,您需要针对特定​​玩家_id评估所有questionId问题与所有_id之间的设定差异。

建议您不要在MongoDB中完成整个操作,

  1. 应用启动时,对所有问题_id进行查询,并将其存储在变量中。
  2. 新用户登录后,查询该用户的所有questionId
  3. 在应用程序的(1)和(2)之间进行设置差,随机选择一个,然后从数据库中查询确切的问题_id
  4. 更新PlayedQuestions集合。

这样,当用户想要获取下一个问题时,您无需每次都进行昂贵的联接。该信息已被缓存在应用程序中。