php簡單查詢mongoDB

2021-07-04 05:37:45 字數 3001 閱讀 4682

以前都是玩mysql的,從這週開始接觸mongodb,並且用php查了一波mongodb。其實和mysql差不多,只是換了乙個資料庫,所以查詢語句的寫法不一樣。在這裡簡單總結一下。

一、mongodb

mysql是關聯式資料庫,mongodb是非關聯式資料庫,nosql(not only sql 我以前一直以為就是 no-sql)。

1. 沒有資料結構的限制

(1)沒有表結構的概念,每條記錄可以有完全不同的結構

(2)業務開發方便快捷

(3)sql資料庫要事先定義表結構再使用

2. 完全的索引支援

(1)redis只能按鍵查詢key-value

(2)hbase的單索引,二級索引需要自己構建

而mongodb支援單鍵索引、多鍵索引、陣列索引、全文索引、地理位置索引等。

3. 方便的冗餘和擴充套件

(1)複製集保證資料安全

(2)分片擴充套件資料規模

4. 良好的支援

完善的文件和齊全的驅動

二、php操作mongodb

對於mongodb的了解也就僅限於此。接下來的任務就是用php操作mongodb,這裡主要涉及的是簡單的查詢。

這次的學習有點急功近利,就想著趕緊學會用,根本沒有對mongodb有乙個很系統、很深入的了解。(當然時間不允許啦,不然強迫症的我估計會從頭學起啊。)

php操作mongodb,我是從另外的乙個教程學習的,現在把位址貼在這。

mongodb php 教程

我本以為這樣就可以順利完成任務,其實我還是圖樣。

這樣講沒什麼意思,我還是上**吧。

<?php 

// connect

$m = new mongoclient();

// select a database

$db = $m->ht_email;

// select a collection (analogous to a relational database's table)

$collection = $db->email;

$cc= isset($_request['cc'])?($_request['cc']):"";

$from = isset($_request['from'])?($_request['from']):"";

$to = isset($_request['to'])?($_request['to']):"";

$attach = isset($_request['attach'])?($_request['attach']):"";

$subject = isset($_request['subject'])?($_request['subject']):"";

//where

$query = array();

if (!empty($cc))

if (!empty($from))

if (!empty($to))

if (!empty($attach))

if (!empty($subject))

//page

$pagesize = 10; //每頁顯示的資料條數

$page = isset($_get['page'])?intval($_get['page']):1; //獲取頁數資訊

$offset = ($page - 1) * $pagesize; //偏移量( //獲取limit的第乙個引數的值 offset ,假如第一頁則為(1-1)*10=0,第二頁為(2-1)*10=10。 (傳入的頁數-1) * 每頁的資料 得到limit第乙個引數的值)

$total = $collection->find($query)->skip(0)->count(true);

$pagenum = ceil($total/$pagesize); //獲得總頁數

if ($page<1)

if ($page>$pagenum)

if($page<10)

elseif ($page>=10 && $page

elseif ($page>=($pagenum-9+1))

$pre= $page-1;

$next= $page+1;

$page_params = "&from=$from&to=$to&subject=$subject&cc=$cc&attach=$attach";

//find

$cursor = $collection->find($query)->limit($pagesize)->skip($offset);

?>

**都有注釋,我還是簡單解釋一下我研究這一段的心路歷程。

剛開始就是連線資料庫啊,這裡因為web和mongodb在一台伺服器上,所以直接省略了引數。

選擇資料庫和集合。

接下來就是接收前端頁面傳來的引數。這裡不用說了吧,input的name和php的request對應。

然後寫查詢條件,在sql裡就是where。

首先判斷你有沒有接收到引數,如果非空,開始寫條件。

mongodb的條件是寫在乙個陣列中,你要查哪個字段,值是什麼。

這裡的mongoregex是用來模糊匹配的。

array_merge是陣列的合併,用來實現多條件查詢。

接下來是分頁,這個之前講過。需要注意的是$total的計算。就要用到mongodb統計的語法count()。

還要注意的一點就是,要寫翻頁引數。

查詢語句是find。把我們剛才構造好的查詢條件當做引數就好了。

翻頁的查詢語句是用limit和skip來實現的。這裡模擬mysql的limit  $pagesize,$offset 很容易理解。

翻頁顯示頁數的**和mysql一樣,這裡就不寫了。

至此,就可以很簡單的查詢mongodb的資料。

mongodb是一條新的路,希望自己可以在這方面再深入學習。

php簡單操作mongodb

一 插入資料 例 向預設的test資料庫的wj表中插入資料 manager new mongodb driver manager mongodb localhost 27017 插入資料 bulk new mongodb driver bulkwrite manager executebulkwri...

PHP 常見mongodb查詢操作

字段字串為 querys array name shian 數值等於多少 querys array number 7 數值大於多少 querys array number array gt 5 數值大於等於多少 querys array number array gte 2 數值小於多少 query...

PHP之MongoDB的查詢

專案上有乙個使用mongodb自動生成的objectid來查詢資訊的需求 soft name array soft ver array m ids array ids array explode ids 將字串id轉換為陣列id 這一步踩了坑,一開始不知道string型別不可以直接find需要先ne...