使用SailSJS/MongoDB从长列表中查找所有未使用选项的最佳方法



我正在为学校建立一个新的API和数据库。因为该应用程序是针对尚未完全识字的非常年幼的孩子,所以它使用单个学校的登录名,然后允许学生通过选择老师的图标,然后是自己的图标来登录,而不是输入用户名或搜索他们的名字。

为了适应这一点,我们收集了大约1200个对儿童友好的图标,以确保没有重叠,一个学生的图标与另一个学生相同。

问题是,每当创建新生或老师想要更改学生的图标时,我们都必须取消选择该学校中另一名学生已经使用的任何图标的选择。

我第一个解决问题的倾向是将我的学校表链接到一个单独的"可用的"表,每行都以可能的图标的完整列表开始,每次添加学生时,都会从可用图标列表,反之亦然,删除的学生。

这将阻止服务器必须研究所有当前使用的图标并将其与图标的完整列表进行比较,这听起来可能很慢,尤其是在我们的一些学校大约500所学校的情况下学生。

我对这种方法的关注是存储图标的完整列表,即使是数字键,也似乎会占用很多空间。根据我的计算,这将是每所学校的2-4MB。这并不是什么大不了的,但是如果有一种有效的方法而不必存储每所学校的完整列表的方法,我会更喜欢。

这全都使用Sailsjs/MongoDB/Waterline。

有什么建议?

谢谢!

可用图标是派生的数据。我希望不将其存储在数据库中。

我的方法:

  1. 获取所有图标
  2. 为特定学校和老师提供所有使用的图标
  3. 对这两个收藏进行区分。考虑_.difference

1200个图标不是在内存中要处理的大数字。

最新更新