下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當前位置:軟件下載吧 > 數據庫 > DB2 > mongodb中隨機獲取1條記錄的實現方法

          mongodb中隨機獲取1條記錄的實現方法

          時間:2024-02-24 17:17作者:下載吧人氣:23

          實現原理如下

              1.先查詢表中的記錄總數

              2.隨機獲取偏移量為0~總記錄數-1

              3.查詢時skip偏移量,再獲取1條記錄

          因本人測試環境php已升級到7.0以上,mongodb擴展使用支持php7.0以上的擴展,很多方法與php5.6不同。因此代碼必須在php7.0以上運行。如果是php5.6環境,需要修改代碼才能運行。

          代碼如下:

          function.php

          <?php
          // 連接mongodb
          function conn($host, $user, $passwd){
           $server = 'mongodb://'.$user.':'.$passwd.'@'.$host;
           try{
            $conn = new MongoDBDriverManager();
           } catch (MongoDBDriverExceptionConnectionException $e){
            throw new ErrorException('Unable to connect to db server. Error:' . $e->getMessage(), 31);
           }
           return $conn;
          }
          
          // 插入數據
          function add($conn, $dbname, $collname, $data, $index){
          
           // 創建索引
           $cmd = array(
            'createIndexes' => $collname,
            'indexes' => array(
             array(
              'name' => 'index',
              'key' => $index,
              'ns' => $dbname.'.'.$collname
             )
            )
           );
           $command = new MongoDBDriverCommand($cmd);
           $conn->executeCommand($dbname, $command);
          
           // 插入數據
           $bulk = new MongoDBDriverBulkWrite();
           $inserted = 0;
          
           if($data){
            foreach($data as $k=>$v){
             $bulk->insert($v);
            }
            $result = $conn->executeBulkWrite($dbname.'.'.$collname, $bulk);
            $inserted = $result->getInsertedCount();
           }
          
           return $inserted;
          }
          
          // 獲取總記錄數
          function getCount($conn, $dbname, $collname){
           $cmd = array(
            'count' => $collname,
            'query' => array()
           );
           $command = new MongoDBDriverCommand($cmd);
           $result = $conn->executeCommand($dbname, $command);
           $response = current($result->toArray());
           if($response->ok==1){
            return $response->n;
           }
           return 0;
          }
          
          // 隨機獲取一條記錄
          function randOne($conn, $dbname, $collname){
          
           // 總記錄數
           $total = getCount($conn, $dbname, $collname);
          
           // 隨機偏移
           $skip = mt_rand(0, $total-1);
          
           $filter = array();
           $options = array('skip'=>$skip, 'limit'=>1);
           $query = new MongoDBDriverQuery($filter, $options);
           $cursor = $conn->executeQuery($dbname.'.'.$collname, $query);
          
           $result = array();
           if($cursor){
            foreach($cursor as $v){
             $v = objectToArray($v);
             unset($v['_id']);
             $result[] = $v;
            }
           }
          
           return $result? $result[0] : $result;
          }
          
          // 對象轉為數組
          function objectToArray($obj){
           $arr = is_object($obj) ? get_object_vars($obj) : $obj;
           if(is_array($arr)){
            return array_map(__FUNCTION__, $arr);
           }else{
            return $arr;
           }
          }
          ?>
          標簽mongodb,隨機,獲取,1條,記錄,實現,方法

          相關下載

          查看所有評論+

          網友評論

          網友
          您的評論需要經過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 红杏亚洲影院一区二区三区 | 狠狠做深爱婷婷综合一区| 无码精品一区二区三区| 国产一区二区三区韩国女主播| 无码av人妻一区二区三区四区| 无码少妇一区二区三区芒果| 99精品国产一区二区三区2021 | 国产成人一区二区三区视频免费 | 国产精品综合AV一区二区国产馆| 亚洲字幕AV一区二区三区四区| 国产日韩综合一区二区性色AV| 日本不卡免费新一区二区三区| 国产综合一区二区在线观看| 成人免费视频一区二区三区| 秋霞电影网一区二区三区| 亚洲AⅤ无码一区二区三区在线| 一区二区三区高清视频在线观看 | 日韩精品一区二区三区大桥未久 | 丰满爆乳一区二区三区| 精品视频在线观看你懂的一区| 日本片免费观看一区二区| 一区二区三区福利视频| 亚洲av乱码一区二区三区| 精品视频在线观看一区二区| 日本高清一区二区三区| 国产一区在线播放| 亚洲一区在线免费观看| 日韩免费无码一区二区三区 | 国产一区二区三区91| 日韩精品一区二区午夜成人版 | 综合无码一区二区三区四区五区| 精产国品一区二区三产区| 人妻内射一区二区在线视频| 一区二区三区四区视频| 福利一区二区在线| 麻豆国产一区二区在线观看| 中文字幕一区在线播放| 午夜性色一区二区三区不卡视频| 久久精品无码一区二区三区免费| 国产香蕉一区二区三区在线视频 | 中文字幕无线码一区二区 |