Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何改用MongoDB驱动程序重写Mongo客户端代码_Php_Mongodb - Fatal编程技术网

Php 如何改用MongoDB驱动程序重写Mongo客户端代码

Php 如何改用MongoDB驱动程序重写Mongo客户端代码,php,mongodb,Php,Mongodb,背景信息: 我有一个PHP脚本,它解析文本文件并使用它将数据插入mongo数据库。我不再使用旧的Mongo PHP驱动程序,而是使用MongoDB\driver类() 问题 有一段代码我正试图用新类重写,但我似乎无法让它工作——也就是说,它没有将数据写入数据库。。。我也不知道如何找到错误 旧代码: 这是旧代码: //database variables $m = new MongoClient("mongodb://127.0.0.1:27017"); $db = "locations"

背景信息:

我有一个PHP脚本,它解析文本文件并使用它将数据插入mongo数据库。我不再使用旧的Mongo PHP驱动程序,而是使用MongoDB\driver类()

问题

有一段代码我正试图用新类重写,但我似乎无法让它工作——也就是说,它没有将数据写入数据库。。。我也不知道如何找到错误

旧代码:

这是旧代码:

 //database variables
 $m = new MongoClient("mongodb://127.0.0.1:27017");

 $db = "locations";
 function update_location_status($location)
 {
    global $m, $db;
    $collection = $db->locations;
    echo "<pre>".json_encode($status)."</pre>";

    try {
        $cursor = $collection->update(array('domain'=>$status['domain']) , array('$set'=>$status), array('upsert'=>true) ); 
        echo "Successfully upserted location status record for ". $location['domain'] ." into database...<BR>";
        return true;        
    } catch(MongoCursorException $e) {
        var_dump($cursor);
        return false;
    }
如有任何建议,将不胜感激

编辑1

所以我更新了代码,它正在创建数据,但它看起来与以前的/旧的代码不同。 这是来自旧代码的数据的样子:

 $bulk->update(
     ['domain'=>$status['domain']],
     ['$set'=>$status],
     ['multi' => false, 'upsert' => true]
 );

$result = $m->executeBulkWrite(dbname.collectionname, $bulk, $writeConcern);
使用此代码:


我不希望它嵌套在另一个“域”数组下。

您应该将代码更新到下面


您应该将代码更新到以下位置


我只需要调整你的代码来改变“['$set'=>['domain'=>$status]]”,变成“['$set'=>$status]”,我只需要调整你的代码来改变“['$set'=>['domain'=>$status]]”,变成“['$set'=>$status]”
array(0) {
}
{ "_id" : ObjectId("584586312a0d63c2e21eee12"), 
    "bbn" : "133", 
    "customized" : true, 
    "nep" : "812", 
    "pdate" : ISODate("2017-02-05T06:44:41Z"), 
    "domain" : "test.mydomain", "status" : false, "t_name" : "agcab", "type" : "current_status" 
}
global $m, $db;
echo "<pre>".json_encode($status)."</pre>";
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(
    ['domain'=>$status['domain']],
    ['$set'=>['domain'=>$status]],
    ['multi' => false, 'upsert' => true]
);
{ "_id" : ObjectId("5910da5d99077b6b4887582f"), 
    "domain" : { 
        "bbn" : "133", 
        "nep" : "812", 
        "type" : "current_status", 
        "pdate" : ISODate("1970-01-18T07:00:12.882Z"), 
        "status" : false, 
        "domain" : "test.mydomain", 
        "tenant_name" : "agcab", 
        "customized" : true 
    } 
}
 $bulk->update(
     ['domain'=>$status['domain']],
     ['$set'=>$status],
     ['multi' => false, 'upsert' => true]
 );

$result = $m->executeBulkWrite(dbname.collectionname, $bulk, $writeConcern);