MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Inserindo um objeto PHP em um MONGO DB


A maneira mais fácil é provavelmente tornar seu objeto "castable" para um array.

Se as propriedades que você deseja armazenar são public , você pode simplesmente fazer:
$array = (array)$foo;

Caso contrário, um toArray ou fazendo com que ele implemente um Iterator interface funcionará:
class Foo implements IteratorAggregate {

   protected $bar = 'hello';

   protected $baz = 'world';

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

}

Obviamente, você também pode usar get_object_vars , Reflection e outros em vez de codificar a lista de propriedades no getIterator método.

Então, basta:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);

Dependendo de como você deseja armazenar seus objetos, você pode usar DBRefs em vez de armazenar objetos aninhados de uma só vez, para que você possa find facilmente -los separadamente depois. Se não, apenas faça seu toArray método recursivo.