Неопределенное свойство: MongoDB \ Driver \ Manager :: $ db - PullRequest
0 голосов
/ 27 октября 2018

У меня есть локальная база данных MongoDB, работающая на WAMP в Windows 10. Я использую PHP версии 7.2.10, Apache 2.4.35 и расширение MongoDB 1.5.3.У меня есть довольно простое веб-приложение, которое я тестирую, и когда я пытаюсь отправить данные в свою базу данных через php-скрипт, я получаю эту ошибку:

PHP Notice:  Undefined property: MongoDB\Driver\Manager::$db in 
C:\wamp64\www\php\test.php

Соответствующие части test.php,рассматриваемый файл выглядит следующим образом:

$objectId = new MongoDB\BSON\ObjectId();
$dbhost = "127.0.0.1:27017";
$dbname = "db";
$m = new MongoDB\Driver\Manager("mongodb://localhost:27017");
var_dump($m);
$db = $m->$dbname;

Неопределенное свойство приводит к другой ошибке: Fatal error: Uncaught Error: Call to a member function selectCollection() on null, которая приводит к сбою сценария.

Что вызывает свойство MongoDB\Driver\Manager::$db быть неопределенным?

1 Ответ

0 голосов
/ 05 ноября 2018

Рабочий PHP-код выглядит следующим образом.Обратите внимание на наличие ссылки на 'vendor / autoload.php' :

  $DB_CONNECTION_STRING="mongodb://YourCredentials";
  require '../../vendor/autoload.php';
  $manager = new MongoDB\Driver\Manager( $DB_CONNECTION_STRING );

Тогда, если вы используете MongoDB \ Driver \ Manager, современную версию драйвера MongoDB,ваши операции CRUD будут выглядеть так:

Создать документ в коллекции :

$bulkWrite = new MongoDB\Driver\BulkWrite;
$doc = ['name' => 'John', age => 33, profession => 'Guess what?'];
$bulkWrite->insert($doc);
$manager->executeBulkWrite('db.MyCollection', $bulkWrite);

Читать документ в коллекции по имени с ограничением:

$filter = ['name' => 'John'];
$options = ['limit' => 2];
$query = new MongoDB\Driver\Query($filter, $options);
$manager->executeQuery('db.MyCollection', $query);

Чтение документа в коллекции по MongoDb _id с ограничением:

$filter = ['_id' => new MongoDB\BSON\ObjectID( '5bdf54e6d722dc000f0aa6c2' )];
$options = ['limit' => 2];
$query = new MongoDB\Driver\Query($filter, $options);
$manager->executeQuery('db.MyCollection', $query);    

Обновление документа в коллекции : (Подробнее об опциях upsert и multi здесь )

$bulkWrite = new MongoDB\Driver\BulkWrite;
$filter = ['name' => 'John'];
$update = ['$set' => ['name' => 'Smith', age: 35, profession => 'Guess what?']];
$options = ['multi' => false, 'upsert' => false];
$bulkWrite->update($filter, $update, $options);
$manager->executeBulkWrite('db.MyCollection', $bulkWrite);    

Удалить документ в коллекции - Удалить :

$bulkWrite = new MongoDB\Driver\BulkWrite;
$filter = ['name' => 'John', age => 35];
$options = ['limit' => 1];
$bulkWrite->delete($filter, $options);
$manager->executeBulkWrite('db.MyCollection', $bulkWrite);
...