【问题标题】:Convert a MongoDB code with MongoDB\Driver\Manager使用 MongoDB\Driver\Manager 转换 MongoDB 代码
【发布时间】:2018-07-24 22:59:51
【问题描述】:

我正在尝试转换代码以访问 MongoDB using MongoDB\Driver\Manager: latest MongoDB extension of PHP,但遇到了一些困难。确实,在我看来,这个新驱动程序与以前的驱动程序相比有点低级,因此使用起来可能有点复杂......:

$mongoConn = new MongoClient("mongodb://localhost:27017");
$mongoDB = $mongoConn->selectDataBase(dbname1);//dbname2 exists too
...
$index = new MongoDBIndexation($mongoDB);//our class for using

如果可以,我必须开始:

$mongoConn = new MongoDB\Driver\Manager("mongodb://localhost:27017");

请问如何继续使用 $mongoDB?

什么是等价物:

$collection->remove
$collection->save and
$collection->findOne ?

提前致谢

【问题讨论】:

    标签: php database mongodb


    【解决方案1】:

    您可以使用新的 mongo 客户端驱动程序,它提供了与旧版驱动程序类似的所有方法。

    Installation

    Tutorial

    找一个例子

    require 'vendor/autoload.php';
    $m= new MongoDB\Client("mongodb://127.0.0.1/");
    $db = $m->db;
    $collection = $db->col;
    $query = array();
    $document = $collection->findOne($query);
    

    如果你想使用driver manager api,你可以使用下面的等价物

    $collection->移除

    $bulkWrite=new MongoDB\Driver\BulkWrite;
    $filter=array();
    $bulkWrite->delete($filter, array('limit'=>1));
    $mongoConn->executeBulkWrite('db.col', $bulkWrite); 
    

    $collection->保存

    插入:

    $bulkWrite=new MongoDB\Driver\BulkWrite;
    $doc=array();
    $bulk->insert($doc);
    $mongoConn->executeBulkWrite('db.col', $bulkWrite);
    

    更新:

    $bulkWrite=new MongoDB\Driver\BulkWrite;
    $filter=array();
    $update=array('$set' => array());
    $options=array('multi' => false, 'upsert' => false);
    $bulkWrite->update($filter, $options);
    $mongoConn->executeBulkWrite('db.col', $bulkWrite);
    

    $collection->findOne

    $filter= array();
    $options = array('limit'=>1);
    $query = new MongoDB\Driver\Query($filter, $options);
    $mongoConn->executeQuery('db.col', $query);
    

    【讨论】:

    • 最后一行 $mongoConn->executeQuery('db.col;, $query) 的结果是什么?收藏?
    • @VladimirVukanac 返回cursor
    • 可悲的是,它似乎不适用于“普通”Debian 9。Debian 的 ext-mongodb 版本(“apt-get install php-mongodb”)太旧,无法与“composer install mongodb/mongodb”一起使用"。
    • @BlaM 你在哪里发现“太老了,无法使用“composer install mongodb/mongodb”我也在 Debian9 VPS 上安装了,我很高兴让这种垃圾语法工作。$ client = new MongoDB\Client("mongodb://admin:1234@64.52.xxx.xxx/db1"); 产生 500(内部服务器错误)我可以从 mongo shell 中看到 db1 及其收集媒体。
    • @Meryan:这正是我的意思。它不起作用。我不记得我的临时解决方案是什么,但我们最终停止使用 MongoDB。
    猜你喜欢
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多