2010-09-20 2 views
8

Я бег этого кода:PHP MongoDB: Вызов неопределенной метод MongoDB :: вкладыш() в db.php

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

    $collection->insert($content); 

Я пытаюсь проверить MongoHQ, просто создавая случайный набор.

Я получаю эту ошибку:

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

Я установлен клиент, насколько я знаю:

alt text

Я также работает PHP 5.2.6

В чем проблема? Благодарю.

ответ

12

Каждая БД содержит одну или несколько коллекций. Вы пытаетесь вставить в БД, а не в коллекцию.

Я не использовал это расширение, но этот метод не существует в классе MongoDB в соответствии с документацией. Вместо этого это MongoCollection::insert. Вы получаете в коллекцию с помощью: (. Закомментированный линия эквивалентна строке под ней)

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

Я предполагаю, что вы делаете что-то вроде:

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

(Изменить: я не видел ваш фрагмент кода в первый раз. Это именно то, что вы делаете.)

Предлагаю вам прочитать tutorial для получения дополнительной информации.

+1

Не является ли dbname в конце нового Mongo the db? Значит, мне не нужно было выбирать его дважды? – JSNewbie

+0

Вы не вставляете в дБ. Вы вставляете в коллекцию. Экземпляр '$ mongo' - это просто соединение с сервером mongo. Первое свойство - это имя базы данных. Второй - это имя коллекции. – Matthew