![](/img/trans.png)
[英]how to get list of collection {Mongodb} in php using 'new MongoDB\Driver\Manager' driver
[英]How to get collection class object from mongodb/driver/manager in PHP
我正在使用(当前?不确定,php 文档对我来说非常不透明)方法从 PHP 连接到 MongoDB:
$manager = new MongoDB\Driver\Manager("mongodb://{$user}:{$pwd}@{$url}", array("ssl" => true), array("context" => $ctx));
从那里开始,如果我想写一些东西,我会执行以下操作:
$bson = MongoDB\BSON\fromJSON($newData);
$value = MongoDB\BSON\toPHP($bson);
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(
$filter,
['$set' => $value],
['multi' => false, 'upsert' => $upsert]
);
$results = $manager->executeBulkWrite("$DB.$collection", $bulk);
var_dump($results);
MongoDB PHP 教程上的所有文档都以 $collection object... 开头,之后的功能看起来更加用户友好(getInsertedID... insertOne...find...)
例如:
<?php
$collection = (new MongoDB\Client)->test->users;
$insertManyResult = $collection->insertMany([
[
'username' => 'admin',
'email' => 'admin@example.com',
'name' => 'Admin User',
],
[
'username' => 'test',
'email' => 'test@example.com',
'name' => 'Test User',
],
]);
printf("Inserted %d document(s)\n", $insertManyResult->getInsertedCount());
var_dump($insertManyResult->getInsertedIds());
我不清楚他们实际上是如何连接到数据库的......我将如何 go 从$manager
连接到$collection
?
在 MongoDB PHP 文档页面上,它说“您可以直接使用驱动程序的MongoDB\Driver\Manager类构造 collections”。 不幸的是,在结果页面上的搜索不包括“收藏”这个词,而不是作为用户贡献注释中的旁注。
在 MongoDB PHP 参考页面的其他地方,我看不到 MongoDB\Manager class 的描述。
那么,如何访问MongoDB\Collection class中的许多功能?
我无法从 Manager class 中获取集合,但是,我能够使用 bulkWrite class 以安全的方式执行插入(我相信)。 我希望相同的模式也适用于读取和更新。
那些在我之后来到这里的人的代码片段:
//echo "Specify the cert...";
$SSL_DIR = ".";
$SSL_FILE = "XXXXXX.pem";
$ctx = stream_context_create(array(
"ssl" => array(
"cafile" => $SSL_DIR . "/" . $SSL_FILE,
))
);
//echo "Done\n";
// echo "Creating manager...";
$manager = new MongoDB\Driver\Manager("mongodb://{$user}:{$pwd}@{$url}", array("ssl" => true), array("context" => $ctx));
// echo "Done!\n";
// echo "Making BSON...";
$bson = MongoDB\BSON\fromJSON($newData);
// echo "Done!\nMaking Value...";
$value = MongoDB\BSON\toPHP($bson);
$value->_id = (string) new MongoDB\BSON\ObjectID;
// echo "Done!\nMaking Bulk...";
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert($value);
// echo "Done!\nExecuting Bulk Write";
$results = $manager->executeBulkWrite("$db.$collection", $bulk);
if($results->getInsertedCount()==1) {
echo $value->_id;
} else {
echo $results->getWriteErrors();
}
// echo "Done!\n";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.