1、安裝php
一、windows下的安裝linux
下載地址:http://dl.mongodb.org/dl/win32正則表達式
添加mongo到服務中:mongodb
開啓服務:shell
啓動文件:數據庫
::表示在此語句後全部運行的命令都不顯示命令行自己 ::進入G盤 G: cd G:\phpstudy\mongodb\bin mongod --dbpath "G:\phpstudy\mongodb\data"
二、linux下的安裝
windows
待續。。。數組
2、shell命令promise
待續。。。服務器
3、可視化工具
連接:https://pan.baidu.com/s/1uTsIVbOAJeSh68uk_Jg1fg
提取碼:s9tb
Studio 3T 破解教程:
一、建立文件studio3t.bat
@echo off ECHO 重置Studio 3T的使用日期...... FOR /f "tokens=1,2,* " %%i IN ('reg query "HKEY_CURRENT_USER\Software\JavaSoft\Prefs\3t\mongochef\enterprise" ^| find /V "installation" ^| find /V "HKEY"') DO ECHO yes | reg add "HKEY_CURRENT_USER\Software\JavaSoft\Prefs\3t\mongochef\enterprise" /v %%i /t REG_SZ /d "" ECHO 重置完成, 按任意鍵退出...... pause>nul exit
二、將文件studio3t.bat文件移動到以下路徑中
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
三、雙擊運行
而後運行studio 3t軟件
4、PHP操做mongodb
SQL查詢語句 | Mongo查詢語句 |
---|---|
CREATE TABLE USERS (a Number, b Number) | 隱式的建立,或 MongoDB::createCollection(). |
INSERT INTO USERS VALUES(1,1) | $db->users->insert(array("a" => 1, "b" => 1)); |
SELECT a,b FROM users | $db->users->find(array(), array("a" => 1, "b" => 1)); |
SELECT * FROM users WHERE age=33 | $db->users->find(array("age" => 33)); |
SELECT a,b FROM users WHERE age=33 | $db->users->find(array("age" => 33), array("a" => 1, "b" => 1)); |
SELECT a,b FROM users WHERE age=33 ORDER BY name | $db->users->find(array("age" => 33), array("a" => 1, "b" => 1))->sort(array("name" => 1)); |
SELECT * FROM users WHERE age>33 | $db->users->find(array("age" => array('$gt' => 33))); |
SELECT * FROM users WHERE age<33 | $db->users->find(array("age" => array('$lt' => 33))); |
SELECT * FROM users WHERE name LIKE "%Joe%" | $db->users->find(array("name" => new MongoRegex("/Joe/"))); |
SELECT * FROM users WHERE name LIKE "Joe%" | $db->users->find(array("name" => new MongoRegex("/^Joe/"))); |
SELECT * FROM users WHERE age>33 AND age<=40 | $db->users->find(array("age" => array('$gt' => 33, '$lte' => 40))); |
SELECT * FROM users ORDER BY name DESC | $db->users->find()->sort(array("name" => -1)); |
CREATE INDEX myindexname ON users(name) | $db->users->ensureIndex(array("name" => 1)); |
CREATE INDEX myindexname ON users(name,ts DESC) | $db->users->ensureIndex(array("name" => 1, "ts" => -1)); |
SELECT * FROM users WHERE a=1 and b='q' | $db->users->find(array("a" => 1, "b" => "q")); |
SELECT * FROM users LIMIT 20, 10 | $db->users->find()->limit(10)->skip(20); |
SELECT * FROM users WHERE a=1 or b=2 | $db->users->find(array('$or' => array(array("a" => 1), array("b" => 2)))); |
SELECT * FROM users LIMIT 1 | $db->users->find()->limit(1); |
EXPLAIN SELECT * FROM users WHERE z=3 | $db->users->find(array("z" => 3))->explain() |
SELECT DISTINCT last_name FROM users | $db->command(array("distinct" => "users", "key" => "last_name")); |
SELECT COUNT(*y) FROM users | $db->users->count(); |
SELECT COUNT(*y) FROM users where AGE > 30 | $db->users->find(array("age" => array('$gt' => 30)))->count(); |
SELECT COUNT(AGE) from users | $db->users->find(array("age" => array('$exists' => true)))->count(); |
UPDATE users SET a=1 WHERE b='q' | $db->users->update(array("b" => "q"), array('$set' => array("a" => 1))); |
UPDATE users SET a=a+2 WHERE b='q' | $db->users->update(array("b" => "q"), array('$inc' => array("a" => 2))); |
DELETE FROM users WHERE z="abc" | $db->users->remove(array("z" => "abc")); |
$doc = [//定義一個文檔,即一個數組 'First Name' => 'Yang', 'Last Name' => 'Yang', 'Age' => 21, 'Phone' => '110', 'Address' => [ 'Country' => 'China', 'City' => 'Shen Zhen' ], 'E-Mail' => [ '123456@qq.com', ] ];
一、插入數據
$mongo = new MongoClient('mongodb://localhost:27017'); //選擇數據庫 $db = $mongo->selectDB("test"); //選擇集合 $collection = $db->selectCollection("admin"); //新增 $res = $collection->insert(array("name" => "yangs")); var_dump($res); //array(4) { ["n"]=> int(0) ["ok"]=> float(1) 插入成功
二、查詢數據
a、查詢單個數據
$data = $collection->findOne(array("name" => "yangs")); var_dump($data); //array(4) { ["_id"]=> object(MongoId)#6 (1) { ["$id"]=> string(24) "5d5f9f51146e638c0600002c" } ["name"]=> string(5) "yangs" ["age"]=> int(18) ["like"]=> array(2) { [0]=> string(9) "玩遊戲" [1]=> string(9) "打籃球" } }
b、查詢多個數據
//查詢全部 $data = $collection->find(); foreach ($data as $k => $v) { var_dump($v); }
c、條件查詢
//條件查詢 //一、mongodb分別使用$lt、$lte、$eq、$gte、$gt、$ne表示<、<=、=、>=、>、<>,用於整數字段查詢 $cursor = $collection->find(array("age" =>array('$gt' =>10))); while ($doc = $cursor->getNext()){ var_dump($doc); } //二、$in:匹配多個值中任意一個 $cursor = $collection->find(array("Address.Country" => array('$in' => array("China", "USA")))); while ($doc = $cursor->getNext()){ var_dump($doc); } //三、$all:匹配多個值中全部值(用於數組字段查詢) $cursor = $collection->find(array("E-Mail" => array('$all' => array("123456@qq.com", "abc@qq.com")))); while ($doc = $cursor->getNext()){ var_dump($doc);//空 } //三、$or:或查詢 $cursor = $collection->find(array('$or'=>array(array("Address.Country" => "China"), array("Address.Country" => "USA")))); while ($doc = $cursor->getNext()){ var_dump($doc); } //四、$slice:獲取數組字段中指定數目的元素,位於find()函數第二個參數中 $cursor = $collection->find(['First Name' => 'Yang'], ['E-Mail' => ['$slice' => 2]]);//只返回前兩個email $cursor = $collection->find(['First Name' => 'Yang'], ['E-Mail' => ['$slice' => -2]]);//只返回最後兩個email $cursor = $collection->find(['First Name' => 'Yang'], ['E-Mail' => ['$slice' => [1, 2]]]);//忽略第一個,返回接下來兩個 //五、$exists:根據某個字段是否有設置值進行查詢 $cursor = $collection->find(['Hobby' => ['$exists' => false]]);//查找Hobby字段未設置值的文檔 //六、正則表達式查詢 $cursor = $collection->find(['First Name' => new MongoRegex('/^Ya/i')]);//查找First Name字段以Ya開頭的文檔,忽略大小寫差別
d、彙集查詢
//聚合查詢 $data = $collection->aggregate(array( '$group' => array( "_id" => "Address.Country", "total" => array('$sum' => 1),//求總和,表示每匹配一個文檔總和就加1 "minAge" => array('$min' => '$Age'), //分組中Age字段最小值 ) ), [ "cursor" => [ "batchSize" => 0 ] ]); $res = $collection->aggregate([ [//過濾條件:只對符合條件的原始文檔進行聚合運算,如果放在'$group'以後則是隻返回符合條件的結果文檔 '$match' => ['Age' => ['$gt' => 30]] ], [//指定分組字段、統計字段 '$group' => [ '_id' => '$Address.Country', 'totalAge' => ['$sum' => '$Age']//計算各個分組Age字段總和 ] ], //如下操做如果放在'$group'以前則在聚合前做用於原始文檔,若放在'$group'以後則在聚合後做用於結果文檔 ['$unwind' => '$E-Mail'],//將包含有某個數組類型字段的文檔拆分紅多個文檔,每一個文檔的同名字段的值爲數組中的一個值。 ['$project' => ['myAge' => '$Age', 'First Name' => '$First Name']],//指定返回字段,能夠對字段進行重命名,格式:返回字段名 => $原來字段名 ['$skip' => 2],//跳過指定數量的文檔 ['$limit' => 2],//只返回指定數量的文檔 ['$sort' => ['totalAge' => 1]]//排序 ], [ "cursor" => [ "batchSize" => 0 ] ]);
三、修改
//$set:重置特定鍵的值,若字段不存在則新建字段並賦值 $res = $collection->update(['First Name' => 'Yang'], ['$set' => ['Hobby' => 'pingpong']]); //$unset:刪除字段 $res = $collection->update(['First Name' => 'Yang'], ['$unset' => ['Hobby' => 1]]); //$rename:重命名字段,若字段不存在則不進行任何操做 $res = $collection->update(['First Name' => 'Yang'], ['$rename' => ['Hobby' => 'hobby', 'Age' => 'age']]); //注意:若是文檔中已經使用了指定名稱的字段,則該字段將會被刪除,而後再進行重命名操做。 //$setOnInsert:設置了upsert爲true,而且發生了插入操做的時候,將某個字段設置爲特定的 $res = $collection->update(['First Name' => 'Yang'], ['$setOnInsert' => ['lang' => 'English']], ['upsert' => true]); //$push:向指定字段添加一個值(做用於數組字段),若字段不存在會先建立字段,若字段值不是數組會報錯 $res = $collection->update(['First Name' => 'Yang'], ['$push' => ['E-Mail' => '123123@qq.com']]); //$push:向指定字段添加多個值(做用於數組字段),若字段不存在會先建立字段,若字段值不是數組會報錯 $res = $collection->update(['First Name' => 'Yang'], ['$pushAll' => ['E-Mail' => ['666@qq.com', '8888888@qq.com']]]); //使用$push和$each向某個字段添加多個值(做用於數組字段),若字段不存在會先建立字段,若字段值不是數組會報錯 $res = $collection->update(['First Name' => 'Yang'], ['$push' => ['E-Mail' => ['$each' => ['123123@qq.com', '666@qq.com']]]]); //$addToSet:將數據添加到數組中(只在目標數組沒有該數據的時候纔將數據添加到數組中) $res = $collection->update(['First Name' => 'Yang'], ['$addToSet' => ['E-Mail' => '123123@qq.com']]); $res = $collection->update(['First Name' => 'Yang'], ['$addToSet' => ['E-Mail' => ['$each' => ['123123@qq.com', '666@qq.com']]]]); //$pop:從數組中刪除一個元素,-1表示刪除第一個元素,1表示刪除最後一個元素(其實負數都刪除第一個元素,0或正數都刪除最後一個元素) $res = $collection->update(['First Name' => 'Yang'], ['$pop' => ['E-Mail' => 1]]); //$pull:刪除數組中全部指定值 $res = $collection->update(['First Name' => 'Yang'], ['$pull' => ['E-Mail' => '123123@qq.com']]); //$pullAll:刪除數組中多個元素的全部值 $res = $collection->update(['First Name' => 'Yang'], ['$pullAll' => ['E-Mail' => ['123123@qq.com', '666@qq.com']]]); //save() //參數1:但願保存的信息數組 //參數2:擴展選項 // fsync:若設置爲true,w參數將被覆蓋爲0,數據將在更新結果返回前同步到磁盤。 // w:默認爲1;若設置爲0,更新操做將不會獲得確認;使用複製集時可設置爲n,確保主服務器在將修改複製到n個節點後才確認該更新操做 // j:默認爲false,若設置爲true,數據將在更新結果返回以前寫入到日誌中。 // wtimeout:默認爲10000(毫秒),用於指定服務器等待接收確認的時間 // timeout:指定客戶端須要等待服務器響應的超時時間(毫秒) //注意:若已存在則更新,若不存在則插入;更新時使用參數1指定的信息數組替換整個文檔。 //若想更新則應該在參數1中指定_id鍵的值。 $doc = [//定義一個文檔,即一個數組 'First Name' => 'y', 'Last Name' => 'y', 'Age' => 18, 'Phone' => '112', 'Address' => [ 'Country' => 'China', 'City' => '成都' ], 'E-Mail' => [ 'abc@qq.com', ] ]; //$res['ok']=1表示操做成功,$res['updatedExisting']=1表示更新,$res['upserted']=1表示插入 $res = $collection->save($doc); //findAndModify() //參數1:指定查詢條件 //參數2:指定用於更新文檔的信息 //參數3:可選,指定但願返回的字段 //參數4:擴展選項 // sort:以特定順序對匹配文檔進行排序 // remove:若設置爲true,第一個匹配文檔將被刪除 // update:若設置爲true,將在被選擇的文檔上執行更新操做 // new:默認爲false,若設置爲true則返回更新後的文檔,不然返回更新前的文檔 // upsert:若設置爲true,沒有找到匹配文檔的時候將插入一個新的文檔 $res = $collection->findAndModify(['First Name' => 'y'], ['$push' => ['E-Mail' => '123@qq.com']]);
四、刪除
$res = $collection->remove(array("name" => "admin"));//$res['n']表示刪除了幾個文檔
5、PHP7以上操做Mongodb
一、查詢
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017'); $query = new MongoDB\Driver\Query(['age' => 24], ['sort' => ['age' => 1]]); $cursor = $manager->executeQuery('wjt.friend', $query); $data = []; foreach($cursor as $doc) { $data[] = $doc; }
二、添加
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017'); $bulk = new MongoDB\Driver\BulkWrite; $bulk->insert(['name' => 'JetWu5', 'age' => 26]); $bulk->insert(['name' => 'JetWu6', 'age' => 26]); $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);//可選,修改確認 $res = $manager->executeBulkWrite('wjt.friend', $bulk, $writeConcern);
三、修改
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017'); $bulk = new MongoDB\Driver\BulkWrite; $bulk->update( ['name' => 'JetWu5'], ['$set' => ['age' => 30, 'promise' => 'always smile!']] ); $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);//可選,修改確認 $res = $manager->executeBulkWrite('wjt.friend', $bulk, $writeConcern); echo '<pre>'; print_r($res);
四、刪除
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017'); $bulk = new MongoDB\Driver\BulkWrite; $bulk->delete(['name' => 'JetWu3']); $bulk->delete(['name' => 'JetWu4']); $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);//可選,修改確認 $res = $manager->executeBulkWrite('wjt.friend', $bulk, $writeConcern); echo '<pre>'; print_r($res);