我的代码有问题,因为当我尝试调用方法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}抛出(某些路线) 线(某些线)
有谁知道我做错了什么?
答案 0 :(得分:0)
试试这个:
<?php
$m = new MongoClient();
$db = $m->selectDB("demo");
$collections = $db->listCollections();
foreach ($collections as $collection) {
// ...
}
?>
答案 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);