Вставка объекта PHP в базу данных MONGO - PullRequest
3 голосов
/ 20 июня 2011

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

Ответы [ 3 ]

8 голосов
/ 20 июня 2011

Возможно, самый простой способ - сделать ваш объект "преобразовываемым" в массив.

Если вы хотите сохранить public свойства, вы можете просто сделать:

$array = (array)$foo;

В противном случае, метод toArray или создание интерфейса Iteratorwork:

class Foo implements IteratorAggregate {

   protected $bar = 'hello';

   protected $baz = 'world';

   public function getIterator() {
       return new ArrayIterator(array(
           'bar' => $this->bar,
           'baz' => $this->baz,
       ));
   }

}

Очевидно, что вы также можете использовать get_object_vars, Reflection и т. д. вместо жесткого кодирования списка свойств в методе getIterator.

Тогда просто:

$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);

В зависимости от того, как вы хотите хранить ваши объекты, вы можете захотеть использовать DBRef вместо хранения вложенных объектов сразу, чтобы потом вы могли легко find отдельно их хранить.Если нет, просто сделайте ваш метод toArray рекурсивным.

1 голос
/ 24 июля 2012

кодировать в JSON и вставлять в MongoDB.

0 голосов
/ 24 марта 2017

Если вы хотите сохранить ваше значение в Mongo Object ID:

$param = 'ojkhalskdjfhs9df87as08df';
$this->insert($collection, [
'aaaaa' => new MongoId($param)
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...