我来自CodeIgniter / MySQL到Laravel / MongoDB。
例如,平台具有不同变量的User类:
我的网站使用变量:
在移动应用中使用变量:
考虑到这种情况,在我的模型中我应该同时拥有两个变量吗?
<?php
class user{
public $id;
public $name;
public $browser_kind;
public $ios_version;
}
?>
不需要预定义结构的NoSQL优势怎么样?如何在模型中使用它?
答案 0 :(得分:1)
仅仅因为Mongo不需要架构,您仍然需要为模型建模。最大的好处之一就是你可以在没有Mongo挂断你的情况下改变你的数据模型。
答案 1 :(得分:1)
就个人而言,我只会将null
或browser_kind
的{{1}}存储在同一文档中。原因在于未来的扩张。 IOS支持Firefox和Opera Mini等,因此我建议您将整个架构存储在一起。
但是,由于您似乎在这里有两种静态模式,我建议您考虑不将ios_version
和browser_kind
存储在同一文档中,其中一个是{{1} }}
由于两个模式永远不会重叠(在我们对您的方案的了解中),您只需使用相当数量的宝贵空间,具体取决于集合中的文档数量。这是因为MongoDB当前没有压缩其文件。
似乎这些字段永远不会是ios_version
所需的地方,即null
,所有其他字段永远不会是null
在需要非移动用户。
因此我会按照您的方式保留模型,但我会使用像browser_kind
这样的函数去除您不想保存的字段。
当然,这是一个问题,你正在使用一个框架,将所有这些逻辑抽象到一个你可能无法达到的地方,除非你自己做了很多。考虑到这一点,您可以从单个null
类中创建两个类,一个定义array_filter
,一个定义user
,但这会开始增加应用程序的权重。
因此,您可以在那里找到一些选择以及需要考虑的事项。