sql >> Databasteknik >  >> NoSQL >> MongoDB

Infoga ett PHP-objekt i en MONGO DB

Det enklaste sättet är förmodligen att göra ditt objekt "castable" till en array.

Om egenskaperna du vill lagra är public , du kan bara göra:

$array = (array)$foo;

Annars en toArray metod, eller få den att implementera en Iterator gränssnittet kommer att fungera:

class Foo implements IteratorAggregate {

   protected $bar = 'hello';

   protected $baz = 'world';

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

}

Självklart kan du också använda get_object_vars , Reflection och sådant istället för att hårdkoda egenskapslistan i getIterator metod.

Sedan är det bara:

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

Beroende på hur du vill lagra dina objekt, kanske du vill använda DBRefs istället för att lagra kapslade objekt på en gång, så att du enkelt kan find dem separat efteråt. Om inte, gör bara din toArray metod rekursiv.



  1. Kan inte hämta från kapslad array och frågereturunderdokument med MongoTemplate

  2. Återinförs ur funktion, eller sorterar du konstigt?

  3. Översätt Queryable<T> tillbaka till IMongoQuery

  4. Starta MongoDB inifrån en Grunt-uppgift