繁体   English   中英

如何从 PHP 中的 mongodb/driver/manager 获取集合 class object

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM