在 Symfony 4 中使用 MongoDB

Use MongoDB with Symfony 4

我在使用 Symfony 4 和 MongoDB Atlas(云集群...但在本地我认为是一样的)时遇到了一些小问题。我在 Windows 10 pro 上 php 7.1.1.

基于这篇文章

http://php.net/manual/en/mongodb.tutorial.library.php

这是我的管理控制器中的代码

 $mongo = new MongoClient();
        $dbs = $mongo->listDBs();
        print_r($dbs);

我收到这个错误

Attempted to load class "MongoClient" from namespace "App\Controller\Admin".
Did you forget a "use" statement for "MongoClient"?

但是:我的扩展程序加载正确。

MongoDb 分机。 php信息()输出

mongodb
MongoDB support enabled
MongoDB extension version   1.3.4
MongoDB extension stability     stable
libbson bundled version     1.8.2
libmongoc bundled version   1.8.2
libmongoc SSL   enabled
libmongoc SSL library   OpenSSL
libmongoc crypto    enabled
libmongoc crypto library    libcrypto
libmongoc crypto system profile     disabled
libmongoc SASL  enabled
Directive   Local Value Master Value
mongodb.debug   no value

composer.json

"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/mongodb": "^1.6",
"doctrine/mongodb-odm": "^1.2",
"doctrine/mongodb-odm-bundle": "^3.4",
"mongodb/mongodb": "^1.2",

作曲家版本

1.6

我也使用 mongodb-odm-bundle。这工作正常,但我也想在我的项目中使用官方遗留 mongodb 库(与集群连接没问题)。但是当我尝试使用 MongoClient() 时出现此错误...

所以,我必须使用哪个 "use statement"?

客户 class 的名字(我想你的意思是 mongodb/mongodb,而不是来自 doctrine/mongodb)是:\MongoDB\Client.

因此更新您的代码应该可以解决问题:

$mongo = new \MongoDB\Client();
$dbs = $mongo->listDBs();
print_r($dbs);

Symfony 4 + Mongodb Atlas

的正确配置

1) composer require mongodb/mongodb (nothing else)

控制器

namespace App\Controller\your_controller;

包括图书馆

use MongoDB;

CONNECTION(例如获取数据库列表)

$connection = 'mongodb://___full_URI_MongoDBAtlas___';
$client = new MongoDB\Client($connection);
$dbs = $client->listDatabases();
var_dump($dbs);