zoukankan      html  css  js  c++  java
  • 使用PHP7来批量更新MangoDB数据

    直接贴代码

    <?php
    
    set_time_limit(0);
    $manager = new MongoDBDriverManager('mongodb://localhost:27017');
    $namespace = 'test.test';
    $aQuery = array('status' => 200);
    $oQuery = new MongoDBDriverQuery($aQuery);
    $t1 = microtime(TRUE);
    $cursor = $manager->executeQuery($namespace, $oQuery);
    $i = 0;
    $bulk = new MongoDBDriverBulkWrite;
    foreach($cursor as $doc) {
        $i++;
        if ($i % 100000 === 0) {
            $manager->executeBulkWrite($namespace, $bulk);
            echo ($i / 10000) . 'W ' . number_format(microtime(TRUE) - $t1, 2) . " Seconds
    ";
            $bulk = new MongoDBDriverBulkWrite;
        }
        $set = array();
        $set['A'] = strToArray($doc->a);
        $set['B'] = strToArray($doc->b);
        $set['C'] = strToArray($doc->c);
        $bulk->update(
            array('_id' => $doc->_id),
            array('$set' => $set)
        );
    }
    $manager->executeBulkWrite($namespace, $bulk);
    echo 'Total: ' . number_format(microtime(TRUE) - $t1, 2) . " Seconds
    ";
    
    function strToArray($str) {
        $str = str_replace(',', ',', $str);
        $arr = explode(',', $str);
        $ret = array();
        foreach ($arr as $s) {
            $s = trim($s);
            if ($s) {
                $ret[] = $s;
            }
        }
        return $ret;
    }
  • 相关阅读:
    socket错误码获取
    代码整洁之道读书笔记函数
    算法学习之堆排序
    包含与继承区别
    提高 LayerBacked Memory Use
    RenderBuffer
    算法学习之快速排序
    NSTimer
    DNS and BIND ... (转载) zhumao
    Samba学习笔记(转载) zhumao
  • 原文地址:https://www.cnblogs.com/xiangxisheng/p/14260396.html
Copyright © 2011-2022 走看看