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

          軟件下載吧

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

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

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

          原理:

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

          相關下載

          查看所有評論+

          網友評論

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

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 一区二区在线播放视频| 国产一区二区视频免费| 无码8090精品久久一区| 亚洲一区二区女搞男| 日韩人妻一区二区三区蜜桃视频 | 香蕉一区二区三区观| 老熟女高潮一区二区三区| 亚洲无线码在线一区观看| 高清一区二区三区| 日本精品视频一区二区| 四虎成人精品一区二区免费网站| 日韩人妻无码一区二区三区99| 一区 二区 三区 中文字幕 | 中文字幕一区二区三区永久| 日本一区二区三区在线观看视频| 日韩精品一区二区三区中文精品| 污污内射在线观看一区二区少妇| 中文字幕一区二区三区视频在线| 精品女同一区二区| 在线成人一区二区| 日韩精品一区二区三区毛片 | 一区二区三区久久精品| 一区二区视频免费观看| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 免费一区二区三区四区五区| 国产福利日本一区二区三区| 亚洲福利视频一区| 国产福利微拍精品一区二区| 午夜福利无码一区二区| 国产无吗一区二区三区在线欢| 精品中文字幕一区在线| 中文字幕一区二区三区四区 | 色噜噜AV亚洲色一区二区| 色妞AV永久一区二区国产AV| 亚洲电影一区二区| 日本一区二区三区不卡视频| 日本一区二区在线免费观看| 精品黑人一区二区三区| 久久人做人爽一区二区三区| 人妻精品无码一区二区三区| 无码精品人妻一区二区三区AV|