我想使用laravel和MongoDB为纸牌游戏《魔法聚会》(MtG)编写一个应用程序。我想使用来自scryfall API的数据,直到现在,我仍将这些数据序列化到普通的MySQL数据库中。但是,来自Scryfall的数据是非常不可序列化的,并且我将失去很多灵活性,因此我认为这可能是学习不同方法并试用MongoDB的理想项目。
现在在MtG中,每个Card
都是Set
的一部分,因此我认为将Card
对象作为嵌入对象存储在每个Set
中,如下所示:>
{
name: "Set Name",
code: "SN",
// More paramaters for the set...
cards: [{
id: "123ljk123123l",
name: "Card Name"
// All parameters of that card
},
{
id: "123123ljk12al",
name: "Another Card Name"
// All parameters of this card
}]
}
这样,Set
与Card
的关系就是EmbedsMany
。
但是我仍然需要访问卡而不知道它在哪个集合中,仅通过其ID(这是唯一的)即可。这可能吗?这甚至是解决此类问题的最佳方法吗?
最终,我想管理用户卡的集合,因此我需要某种方式能够在用户和卡之间建立ManyToMany关系(直到现在,我使用数据透视表以及其他字段来表示用户拥有的卡数量)类型,以及它们是否受阻,因此我也需要向该关系添加一些信息)
问题就更多了:将其建模到广告数据库中的最佳方法是什么? MongoDB是正确的选择吗?