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

          軟件下載吧

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

          mongodb 隨機獲取一條記錄的方法

          時間:2024-03-26 14:41作者:下載吧人氣:30

          原理:

          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,隨機,獲取,一條,記錄,方法

          相關下載

          查看所有評論+

          網友評論

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

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 无码av不卡一区二区三区| 视频一区二区中文字幕| 人妻久久久一区二区三区 | 真实国产乱子伦精品一区二区三区| 国产精品视频免费一区二区三区| 国精品无码一区二区三区左线| 精品国产一区二区三区久久狼 | 精品一区二区三区四区| 国产成人免费一区二区三区| 国产精品乱码一区二区三| 国产一区二区三区韩国女主播| 人妻夜夜爽天天爽一区| aⅴ一区二区三区无卡无码| 综合激情区视频一区视频二区| 在线免费一区二区| 精品日韩在线视频一区二区三区| 国产另类TS人妖一区二区| 中文字幕无码不卡一区二区三区| 亚洲大尺度无码无码专线一区| 精品国产日韩亚洲一区在线| 国产一区二区三区电影| 中文字幕一区二区三区乱码| 精品黑人一区二区三区| 精品91一区二区三区| 制服中文字幕一区二区| 加勒比无码一区二区三区| 久久精品中文字幕一区| 国精产品一区一区三区有限公司| 国产免费av一区二区三区| 亚洲高清日韩精品第一区| 国产福利一区视频| 成人免费观看一区二区| 人妻体内射精一区二区| 国内精品视频一区二区三区八戒 | 国产一区在线播放| 亚洲av无码片区一区二区三区| 精品无码一区二区三区爱欲 | 波多野结衣一区视频在线| 69福利视频一区二区| 国产精品一区二区久久精品无码| 激情亚洲一区国产精品|