Question

How to use MongoDB\Client\ in PHP DO Function

I am writing PHP DigitalOcean functions that connect to a hosted MongoDatabase.

I can connect to the DB using MongoDB\Driver\Manager like this:

$m = new MongoDB\Driver\Manager('connectionstring');

But I can’t use MongoDB\Client, the below fails with Error: Class "MongoDB\Client" not found

$mgc = new MongoDB\Client();

Is it possible to use MondoDB\Client somehow?


Submit an answer


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Matt Welke
DigitalOcean Employee
DigitalOcean Employee badge
February 14, 2023

The reason that MongoDB\Driver\Manager does not cause the “Error: Class <class> not found” error message but MongoDB\Client does is that MongoDB\Driver\Manager is included in the PHP runtime right now.

Because MongoDB\Client is not provided by the runtime, in order to use it, you’ll have to include a composer.json file that references its package on Packagist and include a build script. See https://github.com/digitalocean/sample-functions-php-numberstowords for a sample function that does this.

Note that while some classes, like MongoDB\Driver\Manager, are included in the PHP runtime, and can therefore be used without using Composer like this, we don’t officially support anything except what’s built into PHP in the PHP runtime right now. Therefore, the best practice right now is to explicitly list all dependencies you use in your composer.json file. We have plans to address this long term. We are always open to feedback about Functions and our other products, and you can provide it using our official feedback platform at https://ideas.digitalocean.com/.

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up