Search code examples
phpmongodbdrupaldrupal-7autoload

Mongo db client library in drupal 7 module without composer


I am trying to connect to mongo from drupal using client library https://github.com/mongodb/mongo-php-library/blob/master/docs/tutorial/install-php-library.txt . I downloaded the source code. Now i want to use it in .module file

myModule directory structure inside module-

--/MongoDB (src folder of library)

--myModule.module

--myModule.info

Inside myModule.module file -

     function my_autoloader($class) {
          print_r($class);
          include DRUPAL_ROOT.'/sites/all/modules/myModule/MongoDB/' . $class . '.php';
        }

        spl_autoload_register('my_autoloader');

    function myModule_init() {

    //sample code to connect to mongo
      $client = new MongoDB\Client("mongodb://xx.xx.xx.xx:27017");

      $collection = $client->demo->beers;

      $result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

      echo "Inserted with Object ID '{$result->getInsertedId()}'";
}

I am getting error

Fatal error: Class 'MongoDB\Client' not found

What i am doing wrong . any idea ???

Note : I am able to connect when i try to use this

  $m = new MongoDB\Driver\Manager("mongodb://xx.xxx.xx.xx:27017");

  echo "Connection to database successfully"; 

but why not using client ???


Solution

  • Problem was print_r($class); was giving output like MongoDB\Client\ (in name space format) , Then all i had to do replace \ with / using

    $class = str_replace('\\', '/', $class);

    and remove MongoDB from url.
    Still don't know the reason why it was giving MongoDB\Client\