MongoDB和MVC模型变量

时间:2013-03-05 17:54:24

标签: php mongodb nosql

我来自CodeIgniter / MySQL到Laravel / MongoDB。

例如,平台具有不同变量的User类:

我的网站使用变量:

  • ID
  • 名称
  • browser_kind

在移动应用中使用变量:

  • ID
  • 名称
  • ios_version

考虑到这种情况,在我的模型中我应该同时拥有两个变量吗?

<?php
    class user{
        public $id;
        public $name;
        public $browser_kind;
        public $ios_version;
    }
?>

不需要预定义结构的NoSQL优势怎么样?如何在模型中使用它?

2 个答案:

答案 0 :(得分:1)

仅仅因为Mongo不需要架构,您仍然需要为模型建模。最大的好处之一就是你可以在没有Mongo挂断你的情况下改变你的数据模型。

答案 1 :(得分:1)

就个人而言,我只会将nullbrowser_kind的{​​{1}}存储在同一文档中。原因在于未来的扩张。 IOS支持Firefox和Opera Mini等,因此我建议您将整个架构存储在一起。

但是,由于您似乎在这里有两种静态模式,我建议您考虑不将ios_versionbrowser_kind存储在同一文档中,其中一个是{{1} }}

由于两个模式永远不会重叠(在我们对您的方案的了解中),您只需使用相当数量的宝贵空间,具体取决于集合中的文档数量。这是因为MongoDB当前没有压缩其文件。

似乎这些字段永远不会是ios_version所需的地方,即null,所有其他字段永远不会是null在需要非移动用户。

因此我会按照您的方式保留模型,但我会使用像browser_kind这样的函数去除您不想保存的字段。

当然,这是一个问题,你正在使用一个框架,将所有这些逻辑抽象到一个你可能无法达到的地方,除非你自己做了很多。考虑到这一点,您可以从单个null类中创建两个类,一个定义array_filter,一个定义user,但这会开始增加应用程序的权重。

因此,您可以在那里找到一些选择以及需要考虑的事项。