【问题标题】:Trying to persist objects with MongoDB尝试使用 MongoDB 持久化对象
【发布时间】:2011-05-04 00:16:25
【问题描述】:

首先要做的事情。我可能完全偏离了轨道。一般来说,我仍在学习 Mongo 和 NOSql 解决方案。我们正在编写的应用程序中有一个新组件,我们不想坐下来搞乱关系数据库,而是想使用更适合我们的对象的东西。

那么我们举个简单的例子:

Class User extends \Model {
    public $name;
    public $hobbies;
}

$name 只是一个字符串。但是可以说 $hobbies 是一个对象或对象数组。我希望能够将其放入数据存储中,以便稍后检索它。

起初,我将对象分解为数组并将其存储在 Mongo 中,然后将其拉回并填充对象。使用我制作的通用导入和导出方法非常简单。当我有一些具有其他对象作为成员变量等的健壮对象时,问题就出现了。那时我仍然可以导出到多维数组并很​​好地存储它。但是重新导入到对象中变得有问题。

我可以做的另一个选择是 seralize() 对象并将其与一些描述性数据一起存储在 mongo 中。

太好了。想法?

我的部分问题是我是 NOSql 产品的新手,不确定它们的全部限制/潜力。我只是看错了 Mongo 并试图让它做一些它不应该做的事情吗?我宁愿不使用一些 3rd 方模块,而宁愿写一些简单轻量级的东西。

【问题讨论】:

    标签: php mongodb


    【解决方案1】:

    虽然我不想使用 3rd 方应用程序,但 Doctrine 的 Mongo ODM 似乎完全符合我的要求。设置好了,目前看来运行良好。

    http://www.doctrine-project.org/projects/mongodb-odm.html

    【讨论】:

      【解决方案2】:

      我认为序列化是这里的方法。然后你可以为每个类使用魔术方法__sleep__wakeup来处理任何棘手的情况。

      【讨论】:

      • 我唯一的问题是为什么还要使用 Mongo?如果它被序列化,我无法在嵌入对象中进行任何深度搜索:/
      【解决方案3】:

      这里的另一个选项是将您的对象序列化为数组,而不仅仅是使用“序列化”。如果我没记错的话,您实际上可以覆盖这些子对象中的“序列化”方法,基本上让它们将自己序列化为数组(或更具体地说是哈希表)。

      如果 Doctrine 能为您做到这一点,那就更好了。但如果你只是想要这个功能,你可以自己做饭。

      【讨论】:

        猜你喜欢
        • 2016-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        • 2013-08-08
        • 1970-01-01
        相关资源
        最近更新 更多