我正在研究从Filemaker切换到MERN应用的可能性。我得到了NoSQL数据库的基本思想,但是它是一种非常不同的思维方式。我已经重新创建了MySQL中所需的内容,但是Mongo DB(或Firestore)对我很感兴趣。
该应用程序用于记录客户的锻炼情况。每个人都有很多锻炼,每个锻炼中都有很多项目。我不确定在Mongo中执行此操作的最佳方法。
我介于对所有锻炼使用集合之间,并且每个锻炼都包含他们所做的所有项目(运动)的数组。或将这些项目作为单独的集合,并带有一个training_ID进行链接。
我在这里寻找的最重要的事情可能是查看某人进行锻炼的所有实例的能力。根据我的理解,如果我以第一种方式进行操作,那么每条记录都会被提取。但是第二个只会返回该集合中与exercise_ID和person_ID匹配的文档。
对于这样的项目,哪种方法最好?
答案 0 :(得分:0)
第二种选择是在您的案例中存储数据的最佳方法。您总是可以将项目分类到不同的集合中,并将项目ID存储在您的主要集合中,即此处的锻炼。
如果您担心查询(联接)它们,猫鼬会提供“填充”以使用ID作为引用在多个集合之间获取数据。
或者您也可以使用聚合查询来实现相同目的。
希望这会有所帮助:)
答案 1 :(得分:0)
我认为对我来说最好的选择是在每次锻炼中包含一系列项目,因为这基本上是使用no-SQL数据库来更快地访问数据的目的。 但是,有一个基本规则。如果您认为每次锻炼的项目阵列都会非常快地增长,而且会变得很大。那么最好为这些项目单独准备一个集合。如果不是,那么将它们保留在数组中。
希望这对您有所帮助。问候! :)