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

          軟件下載吧

          當(dāng)前位置:軟件下載吧 > 數(shù)據(jù)庫(kù) > DB2 > mongodb中隨機(jī)獲取1條記錄的實(shí)現(xiàn)方法

          mongodb中隨機(jī)獲取1條記錄的實(shí)現(xiàn)方法

          時(shí)間:2024-02-24 17:17作者:下載吧人氣:31

          實(shí)現(xiàn)原理如下

              1.先查詢(xún)表中的記錄總數(shù)

              2.隨機(jī)獲取偏移量為0~總記錄數(shù)-1

              3.查詢(xún)時(shí)skip偏移量,再獲取1條記錄

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

          代碼如下:

          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;
          }
          
          // 插入數(shù)據(jù)
          function add($conn, $dbname, $collname, $data, $index){
          
           // 創(chuàng)建索引
           $cmd = array(
            'createIndexes' => $collname,
            'indexes' => array(
             array(
              'name' => 'index',
              'key' => $index,
              'ns' => $dbname.'.'.$collname
             )
            )
           );
           $command = new MongoDBDriverCommand($cmd);
           $conn->executeCommand($dbname, $command);
          
           // 插入數(shù)據(jù)
           $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;
          }
          
          // 獲取總記錄數(shù)
          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;
          }
          
          // 隨機(jī)獲取一條記錄
          function randOne($conn, $dbname, $collname){
          
           // 總記錄數(shù)
           $total = getCount($conn, $dbname, $collname);
          
           // 隨機(jī)偏移
           $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;
          }
          
          // 對(duì)象轉(zhuǎn)為數(shù)組
          function objectToArray($obj){
           $arr = is_object($obj) ? get_object_vars($obj) : $obj;
           if(is_array($arr)){
            return array_map(__FUNCTION__, $arr);
           }else{
            return $arr;
           }
          }
          ?>
          標(biāo)簽mongodb,隨機(jī),獲取,1條,記錄,實(shí)現(xiàn),方法

          相關(guān)下載

          查看所有評(píng)論+

          網(wǎng)友評(píng)論

          網(wǎng)友
          您的評(píng)論需要經(jīng)過(guò)審核才能顯示

          熱門(mén)閱覽

          最新排行

          公眾號(hào)

          主站蜘蛛池模板: 日本高清成本人视频一区| 日本不卡一区二区三区| 99在线精品一区二区三区| 国产福利一区二区在线视频| 中文字幕av日韩精品一区二区| 无码精品前田一区二区| 冲田杏梨AV一区二区三区| 激情亚洲一区国产精品| 熟妇人妻AV无码一区二区三区| 亲子乱AV视频一区二区| 久久精品国产一区二区| 一区二区国产精品| 日本一区二区高清不卡| 日韩一区二区在线免费观看| 精品久久久久久无码中文字幕一区| 国产精品制服丝袜一区| tom影院亚洲国产一区二区| 亚洲A∨无码一区二区三区| 熟女性饥渴一区二区三区| 在线精品国产一区二区三区| 精品伦精品一区二区三区视频 | 日韩在线一区二区三区视频| 97av麻豆蜜桃一区二区| 农村乱人伦一区二区| 91福利一区二区| 国产乱码一区二区三区| 成人区人妻精品一区二区三区| 无码中文字幕乱码一区| 亚洲av色香蕉一区二区三区蜜桃| 中文字幕日韩一区二区不卡| 3d动漫精品一区视频在线观看 | 影院成人区精品一区二区婷婷丽春院影视 | 视频在线观看一区| 亚洲国产精品一区二区第一页免| 亚洲第一区精品观看| 农村人乱弄一区二区| 激情内射亚洲一区二区三区 | 国产品无码一区二区三区在线蜜桃| 国产精品污WWW一区二区三区| 中文字幕日本一区| 在线播放一区二区|