我正在寻找有关如何在以下情况下提高数据库性能的提示。(或者也许我应该考虑重新设计数据库)。
我有 50 多个不同视频插槽的视频插槽社交应用程序。问题是每次用户旋转时,我都必须将插槽信息保存到 DB。
目前我有以下数据库结构: 1 个包含用户配置文件的集合和插槽数组中的许多插槽子文档。
{
  _id: 1,
  firstName: John,
  lastName: Smoth,
  money: 1000,
  aLotOfOtherUserInfo: true,
  slots:
  [
    {
      slotId: 1,
      bet: 1,
      lines: 25,
      payout: 100,
      reels: [...]
      winnings: [...]
      freeSpins: [...]
    }
  ]
}
在任何插槽中的每个用户旋转时,我都必须完全更新插槽数组中的插槽信息。插槽由slotId找到。
update(
  { 
    "_id": 1, 
    "slots.slotId": 1
  },
  { 
    $set: {"slots.$": 
    {
      "slotId":1,
      aLotOfUpdatedSlotInfo: true
    }}
  }
)
- 我是否需要在“slots.slotId”上创建索引以改进所需的插槽搜索?
- 或者也许我应该考虑重新设计数据库并将每个用户插槽存储在单独的集合中?但是,例如,在用户登录时,我将不得不循环浏览所有集合并加载当前用户的所有插槽信息。所以这不是我认为在每个用户登录时进行 50 多个查询的好选择。
非常感谢您的帮助。我是 NoSQL 的新手,有时很难以 NoSQL 的方式思考。提前致谢