2010-09-20 12 views
8

Je suis en ce code:php MongoDB: Appel à la méthode non définie MongoDB :: insert() dans db.php

$db = new Mongo("mongodb://user:[email protected]:27081/dbname"); 
    $collection = $db->foobar; 

    $collection->insert($content); 

Je suis en train de tester mongohq par la simple création d'une collection aléatoire.

Je reçois cette erreur:

Fatal error: Call to undefined method MongoDB::insert() in /ajax/db.php on line 24 

Je le client est installé pour autant que je sais:

alt text

Je suis en cours d'exécution aussi php 5.2.6

Quel est le problème? Merci.

Répondre

12

Chaque DB contient une ou plusieurs collections. Vous essayez d'insérer dans la base de données, au lieu de la collection.

Je n'ai pas utilisé cette extension, mais cette méthode n'existe pas dans la classe MongoDB selon la documentation. Au lieu de cela, il s'agit de MongoCollection::insert. Vous obtenez à une collection par: (. La ligne commentée est équivalente à la ligne en dessous)

// $collection = $mongo->selectDB("foo")->selectCollection("bar"); 
$collection = $mongo->foo->bar; 
$collection->insert(array('x' => 1)); 

Je devine que vous faites quelque chose comme:

$collection = $mongo->foo; 
$collection->insert(array('x' => 1)); 

(Edit: Je n'ai pas vu votre extrait de code la première fois, c'est exactement ce que vous faites.)

Je vous suggère de lire le tutorial pour plus d'informations.

+1

est-ce pas DbName à la fin de la nouvelle Mongo DB? Donc je n'aurais pas à le sélectionner deux fois? – JSNewbie

+0

Vous n'insérez pas dans un db. Vous insérez dans une collection. L'instance '$ mongo' est juste une connexion à un serveur mongo. La première propriété est le nom de la base de données. Le second est le nom de la collection. – Matthew