如何使用PHP

时间:2018-03-20 14:34:27

标签: php mongodb

我的代码有问题,因为当我尝试调用方法getCollectionNames()时出现致命错误。

listCollections()效果很好。

这是我的代码。

require '../vendor/autoload.php';
$client = new MongoDB\client;
$database = $client->test;
$colections = $database->getCollectionNames();

foreach ($colections as $col) {
    var_dump($col);
}

......这就是错误。

  

致命错误:未捕获错误:调用未定义的方法   MongoDB \ Database :: getCollectionNames()in   (某些路线)堆栈跟踪:#0   {main}抛出(某些路线)   线(某些线)

有谁知道我做错了什么?

4 个答案:

答案 0 :(得分:0)

试试这个:

<?php

    $m = new MongoClient();
    $db = $m->selectDB("demo");
    $collections = $db->listCollections();

    foreach ($collections as $collection) {
       // ...
    }

?>

http://php.net/manual/en/mongodb.listcollections.php

答案 1 :(得分:0)

尝试将MongoDB客户端指向PC上运行的Mongo实例,这样:

$client = new MongoDB\Client("mongodb://localhost:27017");

首先,尝试在MongoDB shell中执行getCollectionNames命令,如下所示:

use dbname; // dbname is your database name
dbname.getCollectionNames();
  

也许,您可能没有在require()方法中正确加载库,因此请再次检查。我知道您正在使用作曲家,但只需检查该文件夹的相对位置。

或者,如上所述,您也可以使用listCollections()

<?php

$client = new MongoClient();
$db = $client->selectDB("test");
$collections = $db->listCollections();

foreach ($collections as $collection) {
    echo " ... " . "<br />";
}

?>

答案 2 :(得分:0)

您可以使用以下方法:

private void OnPageLoaded(object sender, RoutedEventArgs e)
{
    foreach (var item in FirstChars.Children)
    {
        if (item is ToggleButton button && button.Content.ToString().Equals("A"))
        {
            button.IsChecked = true;
            // Perform your query here or call the appropriate method
            break;
        }
    }
}
  

请注意,下面带有此版本的软件包应安装在您的项目中

composer.json:

 require_once __DIR__ .'/vendor/autoload.php' ;
 $connection = new MongoDB\Client("mongodb://127.0.0.1:27017"); 
 $DB = $connection->dbName ;

foreach ($moDB->listCollections() as $item) {
    echo $item['name'] . "\n";
}

答案 3 :(得分:0)

通过\MongoDB\Driver\Manager,您可以使用以下代码列出MongoDB数据库的集合:

$colls = $mongo->executeCommand("my_db_name", new \MongoDB\Driver\Command([
    'listCollections' => 1,
    'nameOnly' => 1,
    'authorizedCollections' => 1,
]);

$colls->setTypeMap(array(
    'array' => 'array',
    'document' => 'array',
    'root' => 'array'
));

foreach ($colls as $c)
    echo($c['name']);

要检查集合是否存在,您可以

$exists = in_array("my_collection_name", $colls);