Попытка сохранить объекты с MongoDB - PullRequest
0 голосов
/ 02 ноября 2010

обо всем по порядку. Я могу быть совершенно не в курсе этого. Я все еще учусь с решениями Mongo и NOSql в целом. У нас есть новый компонент для нашего приложения, которое мы пишем, и вместо того, чтобы суетиться с базой данных отношений, мы хотели использовать что-то, что будет лучше соответствовать нашим объектам.

Итак, давайте возьмем простой пример:

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

$ name будет просто строкой. Но допустим, что $ hobbies - это объект или массив объектов. Я хочу просто иметь возможность выбросить это в хранилище данных и получить его позже.

Сначала я шел по дороге, разбивая объект на массивы и сохраняя его в Монго, а затем вытаскивая его обратно и заполняя объект. Довольно просто с помощью общего метода импорта и экспорта, который я сделал. Проблема возникает, когда у меня есть несколько надежных объектов, которые имеют другие объекты в качестве переменных-членов и так далее. На тот момент я все еще мог экспортировать в многомерный массив и хранить его в порядке. Но импорт обратно в объекты стал проблематичным.

Другой вариант, который я мог бы сделать, это просто seralize () объекта и сохранить его в монго вместе с некоторыми описательными данными.

Sooooo. Мысли?

Часть моей проблемы здесь в том, что я новичок в продуктах NOSql и не уверен в их полных ограничениях / потенциале. Я просто неправильно смотрю на Монго и пытаюсь заставить его делать то, чего он не должен делать? Я бы предпочел не использовать какой-либо сторонний модуль и предпочел бы написать что-то простое и легкое.

Ответы [ 3 ]

2 голосов
/ 02 ноября 2010

Хотя я не хотел использовать стороннее приложение, ODM от Doctrine для Mongo, кажется, делает именно то, что я хотел. Все готово и, кажется, работает хорошо.

http://www.doctrine -project.org / проекты / MongoDB-odm.html

0 голосов
/ 03 ноября 2010

Другой вариант здесь - сериализовать ваши объекты в массивы, а не просто использовать "serialize".Если я не ошибаюсь, вы можете переопределить метод «сериализации» в этих подобъектах и ​​в основном заставить их сериализовать себя в массивы (или, более конкретно, хеш-таблицы).тогда все к лучшему.Но если вы просто хотите эту функцию, вы, вероятно, можете готовить самостоятельно.

0 голосов
/ 02 ноября 2010

Я думаю, что сериализация - это путь сюда. Затем вы можете использовать магические методы __sleep и __wakeup для каждого класса, чтобы справляться с любыми сложными ситуациями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...