亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

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

2020-03-14 13:07:09
字體:
來源:轉載
供稿:網友

實現原理如下

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

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

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

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

代碼如下:

function.php

<?php// 連接mongodbfunction conn($host, $user, $passwd){ $server = 'mongodb://'.$user.':'.$passwd.'@'.$host; try{  $conn = new MongoDB/Driver/Manager(); } catch (MongoDB/Driver/Exception/ConnectionException $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 MongoDB/Driver/Command($cmd); $conn->executeCommand($dbname, $command); // 插入數據 $bulk = new MongoDB/Driver/BulkWrite(); $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 MongoDB/Driver/Command($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 MongoDB/Driver/Query($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; }}?>

demo.php

<?phprequire('function.php');// 連接mongodb$conn = conn('localhost','testdb','root','123456');// 插入50條數據記錄$data = array();// 索引$index = array('user'=>true);for($i=0; $i<50; $i++){ $data[] = array(  'user' => 'test_user_'.str_pad($i, 4, '0', STR_PAD_LEFT) );}$inserted = add($conn, 'testdb', 'user', $data, $index);echo '成功插入'.$inserted.'條測試記錄數<br><br>';// 隨機獲取一條記錄,抽5次echo '隨機獲取一條記錄,抽5次<br>';$result = array();for($i=0; $i<5; $i++){ $result[] = randOne($conn, 'testdb', 'user');}echo '<pre>';print_r($result);echo '</pre>';?>

輸出:

成功插入50條測試記錄數

隨機獲取一條記錄,抽5次

Array( [0] => Array  (   [user] => test_user_0017  ) [1] => Array  (   [user] => test_user_0026  ) [2] => Array  (   [user] => test_user_0004  ) [3] => Array  (   [user] => test_user_0043  ) [4] => Array  (   [user] => test_user_0023  ))

測試php代碼,首先需要在mongodb創建testdb及創建用戶和執行auth。

方法如下:

use testdbdb.createUser(  {   "user":"root",   "pwd":"123456",   "roles":[{"role" : "readWrite", "db":"testdb"}]  } ) db.auth(  {   "user":"root",   "pwd":"123456"  } ) 

總結

以上就是這篇文章的全部內容,希望本文的內容對大家的學習或者工作能有所幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女久久| 国产欧美在线播放| 综合网中文字幕| 欧美精品福利视频| 国产精品女视频| 日韩欧美一区视频| 亚洲久久久久久久久久久| 亚洲欧洲视频在线| 日韩美女福利视频| 国产欧美精品在线| 久久久国产精品免费| 91国产精品电影| 久久天天躁狠狠躁夜夜躁| 国产精品久久久久久久9999| 欧美激情va永久在线播放| 不卡在线观看电视剧完整版| 人体精品一二三区| 久久琪琪电影院| 亚洲天堂免费视频| 欧美成人一区在线| 国产精品久久久久久超碰| 亚洲精品国产精品国自产观看浪潮| 91在线网站视频| 亚洲片在线资源| 国内精品小视频| 两个人的视频www国产精品| 精品久久久久久亚洲国产300| 青草成人免费视频| 色综合久久久888| 国产999精品久久久| 亚洲一区二区三区乱码aⅴ| 国产精品一区二区性色av| 精品日本美女福利在线观看| 日韩成人激情视频| 最近免费中文字幕视频2019| 国产精品国产三级国产aⅴ浪潮| 久久国产色av| 亚洲人成五月天| 亚洲久久久久久久久久| 亚洲剧情一区二区| 国模gogo一区二区大胆私拍| 亚洲综合一区二区不卡| 欧美精品在线免费播放| 国产一区二区三区在线| 久久久久久国产精品美女| 久久精品国产亚洲| 欧美一区二区大胆人体摄影专业网站| 日韩精品极品视频| 最近免费中文字幕视频2019| 日韩亚洲成人av在线| 日本久久久久久久| 91国在线精品国内播放| 精品国产欧美成人夜夜嗨| 一级做a爰片久久毛片美女图片| 九九热精品视频国产| 欧美精品videos| 欧美日韩美女在线| 欧美一区二区视频97| 日韩av一区二区在线| 亚洲欧美精品中文字幕在线| 久久久久久国产精品三级玉女聊斋| 亚洲欧洲午夜一线一品| 色综合亚洲精品激情狠狠| 中文字幕亚洲无线码a| 欧美日韩成人网| 日韩av免费在线播放| 日韩女优人人人人射在线视频| 亚洲午夜久久久久久久| 日韩欧美国产激情| 日韩在线观看免费网站| 国精产品一区一区三区有限在线| 欧美尤物巨大精品爽| 久久视频在线免费观看| 欧美精品在线极品| 国产成人97精品免费看片| 欧美日韩中文在线| 都市激情亚洲色图| 韩国精品久久久999| 国产精品福利片| 国内免费精品永久在线视频| 2018日韩中文字幕| 51色欧美片视频在线观看| 岛国视频午夜一区免费在线观看| 成人免费淫片视频软件| 久久99精品视频一区97| 亚洲r级在线观看| 亚洲一区中文字幕在线观看| 97在线视频免费播放| 中文字幕av一区二区| 日本久久久久亚洲中字幕| 欧美性猛交丰臀xxxxx网站| 亚洲激情第一页| 91视频国产高清| 一区二区成人精品| 丝袜情趣国产精品| 亚洲美女精品成人在线视频| 亚洲成人黄色网址| 成人乱人伦精品视频在线观看| 日韩男女性生活视频| 亚洲乱亚洲乱妇无码| 日韩黄在线观看| 97免费视频在线播放| 国产精品嫩草影院久久久| 国产偷亚洲偷欧美偷精品| 国产视频精品一区二区三区| 亚洲欧美变态国产另类| 美女扒开尿口让男人操亚洲视频网站| 欧美激情一级精品国产| 日韩一区在线视频| 8090理伦午夜在线电影| 亚洲国产天堂久久国产91| 国产精品都在这里| 亚洲精品狠狠操| 国产精品偷伦免费视频观看的| 亚洲情综合五月天| 亚洲一区二区自拍| 亚洲欧美日本精品| 久久黄色av网站| 欧美裸体xxxx极品少妇软件| 国产69精品久久久久9| 欧美国产亚洲精品久久久8v| 91中文字幕在线| 欧美成人午夜影院| www日韩中文字幕在线看| 亚洲天堂一区二区三区| 亚洲午夜精品久久久久久性色| 日韩av电影手机在线观看| 在线看欧美日韩| 黑人极品videos精品欧美裸| 情事1991在线| 国产做受高潮69| 欧美在线日韩在线| 91精品国产99久久久久久| 欧美成人精品一区二区三区| 亚洲精品一区久久久久久| 欧美一级在线亚洲天堂| 精品国产一区二区三区四区在线观看| 久久精品在线播放| 久久噜噜噜精品国产亚洲综合| 91手机视频在线观看| 久久精品免费播放| 91干在线观看| 在线观看久久av| 久久成人精品一区二区三区| 久久久久久91| 国产亚洲精品成人av久久ww| 国产精品pans私拍| 国产这里只有精品| 欧美激情按摩在线| 欧美日本亚洲视频| 欧美性videos高清精品| 国产精品扒开腿做爽爽爽的视频| 精品国产乱码久久久久久虫虫漫画| 国产脚交av在线一区二区| 久久国产精品久久久| 国产精品激情自拍| 久久精品国产欧美激情| 久久艳片www.17c.com| 久久久亚洲网站| 亚洲欧洲美洲在线综合| 精品国产区一区二区三区在线观看| 国产日韩av在线| 国产综合视频在线观看| 亚洲91精品在线|