<?php error_reporting(7); $conn = new Mongo(); $db = $conn->PHPDataBase; $collection = $db->PHPCollection; /*----------------------------- * 刪除 *----------------------------- $collection->remove(array("name" => "xixi111")); */ /*------------------------------ * 插入 *------------------------------ for($i = 0;$i <= 50;$i++) { $data = array("name" => "xixi".$i,"email" => "673048143_".$i."@qq.com","age" => $i*1+20); $collection->insert($data); } */ /*------------------------------- * 查找 *------------------------------- $res = $collection->find(array("age" => array('$gt' => 25,'$lt' => 40)),array("name" => true)); foreach($res as $v) { print_r($v); } */ /*------------------------------- * 更新 *------------------------------- $collection->update(array("age" =>22),array('$set' => array("name" => "demoxixi"))); */ ?>
完成MongoDB的安裝
完成PHP對MongoDB的擴展,重啟apache
開啟MongoDB服務,就像mysql一樣。
然后就可以用PHP操作MongoDB了。
下面是我自己今天學習的一些筆記:
首先要能對概念有個清晰的理解。
新聞的增刪改查。
首先是新聞添加,新聞標題,新聞作者,新聞內容。
然后是新聞的讀取。MongoDB中的數據讀取出來,通過PHP讀取。
這里面的界面都是用HTML語言寫的,這個是一樣的。
傳統的關系數據庫一般由數據庫、表、記錄三個層次組成。
MongoDB是由數據庫、集合、文檔三個層次組成。
MongoDB采用的是面向文檔的數據模型使其可以自由在多台服務器之間分割數據。
它還可以平衡集群的數據和負載,自動重排文檔。
支持:
索引
可以存儲Javascript
文件存儲
不支持:
join和復雜的多行事務
文檔是MongoDB中數據的基本單元(類似於關系型數據庫中的行)
類似的,集合可以被看做是沒有模式的表。
多個鍵及其關聯的值有序地放置在一起便是文檔。
{"greeting":"Hello,world!"}
這個文檔只有一個鍵"greeting",其對應的值為"Hello,world!"
{"greeting":"Hello,world!","foo":3}
MongoDB不但區分類型,而且區分大小寫:
{"foo":3}
{"foo":"3"}
和
{"foo":3}
{"Foo":3}
都是不同的
還有一個非常重要的事項,MongoDB文檔不能有重復的鍵。下面的文檔時非法的:
{"greeting":"Hello,world!","greeting":"Hello,MongoDB"}
集合
集合就是一組文檔。如果說MongoDB中的文檔類似於關系型數據庫中的行,那么集合就如同表。
集合是無模式的,這意味着一個集合里面的文檔可以是各式各樣的。
例如下面的文檔可以存在於同一個集合里:
{"greeting":"Hello,world!"}
{"foo":5}
把同種類型的文檔放在一個集合里,這樣數據會更加集中。
MongoDB中多個文檔組成集合,同樣多個集合可以組成數據庫。
數據庫名最終會變成文件系統里的文件。
CRUD
插入:
insert函數添加一個文檔到集合里面。例子:db.blog.insert(post)。
讀取:
find讀取集合里的文檔。例子:db.blog.find()。
若是想查看一個文檔,可以用findOne。
更新:
update。update接受兩個參數,第一個是要更新文檔的限定條件,第二個是新的文檔。
例子:db.blog.update({title:"My Blog Post"},post)
刪除:
remove。它可以接受一個文檔以指定限制條件。
db.blog.remove({title:"My Blog Post"})
MongoDB字段類型
null:
null用於表示空值或者不存在的字段。{"x":null}
布爾:
布爾類型有兩個值'true'和'false':
{"x":true}
32位整數:
64位整數:
64位浮點數:shell中的數字都是這種類型。
{"x":3.14}
這也是一個浮點數
{"x":3}
字符串:
{"x":"foobar"}
符號:
對象id:
日期:
正則表達式:
{"x":/foobar/i}
代碼:
{"x":function(){/*...*/}}
二進制數據:
最大值:
最小值:
未定義:
{"x":undefined}
數組:
{"x":["a","b","c"]}
內嵌文檔:
{"x":{"foo":"bar"}}