我不太确定如何用一行话来表达我的问题,但以下是更详细的描述。
我正在构建一个Meteor应用程序,用户可以“拥有”同一份文档。例如,一个用户拥有一张电影列表,当然多个人可以拥有同一部电影。我已经想过几种数据库/集合的结构方式,但不确定哪种最好。
我还应该注意到,电影信息来自外部API,我目前正在将其存储到自己的数据库中,以便在下一次查找时加速。
选项1(我的当前配置):一个集合(电影),存储所有电影及其信息。另一个集合,在每个文档中基于userId存储电影ids列表。启动时,我获取id列表,在我的数据库中查找电影,并将它们存储在本地集合中(共有3个)。我认为这样做的好处是我只需要存储一次电影。到目前为止,我遇到的问题是很难保持同步并在启动时正确加载(等待本地集合填充)。
选项2:一个电影集合,为每个用户存储电影对象列表。这使得初始查找和更新非常简单,但意味着我将多次存储相同的大型文档。
选项3:一个电影集合,每个电影都有一个包含拥有该电影的用户id的数组。这听起来也不错,但当我使用新信息更新电影时,upsert是否有效并保持userid的安全呢?
我正在构建一个Meteor应用程序,用户可以“拥有”同一份文档。例如,一个用户拥有一张电影列表,当然多个人可以拥有同一部电影。我已经想过几种数据库/集合的结构方式,但不确定哪种最好。
我还应该注意到,电影信息来自外部API,我目前正在将其存储到自己的数据库中,以便在下一次查找时加速。
选项1(我的当前配置):一个集合(电影),存储所有电影及其信息。另一个集合,在每个文档中基于userId存储电影ids列表。启动时,我获取id列表,在我的数据库中查找电影,并将它们存储在本地集合中(共有3个)。我认为这样做的好处是我只需要存储一次电影。到目前为止,我遇到的问题是很难保持同步并在启动时正确加载(等待本地集合填充)。
选项2:一个电影集合,为每个用户存储电影对象列表。这使得初始查找和更新非常简单,但意味着我将多次存储相同的大型文档。
选项3:一个电影集合,每个电影都有一个包含拥有该电影的用户id的数组。这听起来也不错,但当我使用新信息更新电影时,upsert是否有效并保持userid的安全呢?
{_id: "123", title: "电影标题"..., user_ids: ["1","2","3"]}
? - zdixon