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

          軟件下載吧

          當(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.先查詢表中的記錄總數(shù)

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

              3.查詢時(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ò)審核才能顯示

          熱門閱覽

          最新排行

          公眾號(hào)

          主站蜘蛛池模板: 国产在线不卡一区二区三区| 中文字幕一区二区日产乱码| 国产av天堂一区二区三区| 日本一区免费电影| 国产日韩一区二区三区| 日本一区二区三区免费高清| 成人精品一区久久久久| 性色AV 一区二区三区| 精品中文字幕一区二区三区四区| 无码av中文一区二区三区桃花岛| 怡红院一区二区三区| 国产丝袜无码一区二区视频| 丝袜人妻一区二区三区网站 | 亚洲AV成人精品日韩一区 | 亚洲一区二区三区写真| 国模精品一区二区三区视频| 波多野结衣高清一区二区三区| 无码人妻精品一区二区三区久久| 一区二区三区无码被窝影院| 日韩精品电影一区亚洲| 午夜精品一区二区三区免费视频| 亚洲bt加勒比一区二区| 日韩伦理一区二区| 国产精品特级毛片一区二区三区| 亚洲AV日韩AV一区二区三曲| 三上悠亚日韩精品一区在线| 毛片一区二区三区无码| 国产一区二区在线视频| 国产未成女一区二区三区| 国产精品无圣光一区二区| 国产精品久久久久久一区二区三区| 国产在线视频一区二区三区98| 亚洲丰满熟女一区二区哦| 国产午夜精品一区理论片| 男人的天堂亚洲一区二区三区| 无码av免费一区二区三区试看| 麻豆一区二区三区蜜桃免费| 精品福利视频一区二区三区| 国精产品一区二区三区糖心 | 在线精品动漫一区二区无广告| 大香伊人久久精品一区二区 |