搜尋
首頁php教程PHP开发cdnoss PHP安裝使用mongodb資料庫

cdnoss PHP安裝使用mongodb資料庫

Dec 23, 2016 pm 12:58 PM
mongodb資料庫

傳統資料庫中,我們要操作資料庫資料都要書寫大量的sql語句,而且在進行無規則資料的儲存時,傳統關係型資料庫建表時對不同欄位的處理也顯得有些乏力,mongo應運而生,而且ajax技術的廣泛應用,json格式的廣泛接受,也使得mongo更貼近開發人員。

mongo簡介及應用場景

MongoDB是一個以文件為導向的非關聯式資料庫(NoSQL),使用json格式儲存。 Mongo DB很好的實現了物件導向的想法(OO思想),在Mongo DB中 每一筆記錄都是一個Document物件。 Mongo DB最大的優點在於所有的資料持久操作都無需開發人員手動編寫SQL語句,直接呼叫方法就可以輕鬆的實作CRUD操作。

mongo能應用在以下場景:

存儲大尺寸、低價值的數據
json及對象類型數據
網站緩存數據
評論、子評論類有明顯從屬關係數據
多服務器數據,其內置的MapReduce很容易現實全域遍歷。

安裝和使用mongodb

我們在官網 https://www.mongodb.org/ 上可以下載到其最新穩定版本,mongo是官方已經編譯好的,解壓縮後即可使用其命令都在bin目錄下。

使用前首先配置mongo.conf檔案

port=xxxxx                                  //代表端口号,如果不指定则默认为 27017 
dbpath=/usr/local/mongodb/db                //数据库路径
logpath=/usr/local/mongodb/logs/mongodb.log //日志路径
logappend=true                              //日志文件自动累加,而不是覆盖
fork=ture                                   //以守护进程方式创建

資料庫和資料表都可以直接創建,即不用切換,直接使用,使用時即創建,mongo裡還可以直接寫js腳本,可直接運行,mongo中如果不指定_id字段,mongo會自動新增一個。

mongo的各種命令

mongo的命令是其精髓,這些十分複雜的命令集合在一塊,使得mongo的查詢變得絢麗而高效。 mongo內的每個表格稱為一個collection(集合),使用指令類似MySQL,切換到資料庫內直接對每個collection運算。其指令由方法(func())、查詢體(寫在{})和運算子(由$開頭)組成。

基本指令

show dbs                                //查看数据库
use dbname                              //切换到数据库
db.createCollection('collection')       //创建数据表
db.collection.drop()                    //删除数据表
db.dropDatabase()                       //删数据库
db.collection.insert({data})            //插入数据
db.collection.find()                    //显示数据表内全部内容

查詢體

{key.attr.attr:value}                                       //普通式
{key:{$ne|$gt|$gte|$lt|$lte|$in|$nin|$all:value}}           //key满足 $oper value的值
{$or|$and|$not|$nor:[{key1:{$gt:value}},{key2:{$ne:value}}]} //用$oper同时限定key1,key2的条件
{key:{$mod{8,2}}}                                           //取出key对8取余为2的值。
{key:{$exist:1}}                                            //取出key列存在的值。
{key:{$type:String|Double|Array|Date|Object|Boolean|......}}//查询key类型为type的列
{key:{$regex:/pattern/}}                                    //通过正则查询,效率较低
{$where:'this.attr.express.....'}                           //直接用where语句,二进制转为JS运算,较慢

find()方法增強

db.collection.find(query,{要取出的列:1,不需要的列:0})     
db.collection.find(query).skip(跳过的行数).limit(限制信息条数);
db.collection.find(query).explain()         //与MYSQL的解释语句一样。
db.collection.remove(query,[justone])   //如不指定query,全部删除;[justone]默认为false意思是查询到多个,但只删一个。

update語句

db.collection.update(query,{key:newvalue})   //注意:新值会覆盖旧值,即数据只剩下语句中定义的key
db.collection.update(query,
{
    $set:{key:newvalue},
    $unset:{key:value},
    $rename:{key:value},
    $inc:{key:value},
    ......
},
{
    multi:true,     //改变所有符合条件的,默认为false
    upsert:true     //没有的话刚添加,默认为false
}
)

遊標

var cursorName=db.collection.fund(query,...)[.skip(num).limit(num)] //创建游标
cursorName.hasNext()                                                //判断是否有下一个
printjson(cursorName.next())                                        //输出游标的下一个指向值
cursorName.forEach(function(Obj){process Obj})                      //遍历操作游标
使用它需要實現它的map和reduce兩個函數

db.collection.getIndexes()                  //查看索引
db.collection.ensureIndex({key:1/-1[,key.attr:1/-1]},{unique:1(是否唯一)},{sparse:1(是否非空)})// 添加正序/倒序索引
db.collection.dropIndex({key:1/2})          //删除索引
db.collection.reIndex()         //重建用了很多出现杂乱的索引

更多更詳細的命令可以在mongo的中文社區 http://docs.mongoing.com/manual-zh/ 找到。

mongo的使用者、資料匯入匯出和叢集


使用者管理

MongoDB預設不開啟授權。可以在開啟伺服器時新增 --auth 或 --keyFile 選項開啟授權。使用設定檔的話,使用 security.authorization 或 security.keyFile 設定。

MongoDB提供 自帶角色, 每個角色都為一種常見用例提供一個明確的作用。例如 read, readWrite, dbAdmin, 和 root 等角色。我們透過創建用戶,創建角色,給用戶/回收不同的角色來進行用戶管理。

新增角色時要先在admin資料庫中新增一個管理員角色,然後使用管理員角色在每個庫中新增不同的角色。

db.runCommand(
           {
             mapReduce: collection,             //要操作的数据表
             map: function(){emit(key1,key2)},  //对key1和key2进行数据映射
             reduce: function(key,value){},     //对key值和数据组value进行操作
             out: <output>,
             query: <document>,
             sort: <document>,
             limit: <number>,
             finalize: <function>,
             scope: <document>,
             jsMode: <boolean>,
             verbose: <boolean>
           }
         )

資料導入導出

我們使用mongo自帶的工具進行導入導出,在mongo/bin目錄下,最好導出csv格式,方便資料交換。

use admin;(切换到admin数据库,对此库操作)
db.createUser(
  {
    user: "username",
    pwd: "password",
    roles:
    [
      {
        role: "userAdminAnyDatabase",
        db: "admin"
      }
    ]
  }
)
use database;
db.auth(&#39;username&#39;,&#39;passwd&#39;);用超级管理员用户登陆后,整个mongo数据库皆可存取。

mongo資料庫叢集

開啟mongod時新增選項--replSet replname;

在mongo客戶端連接上一個mongod進程,進入admin資料庫,然後宣告mongoconf變數:

use admin;

var 'replname',members[{_id:0,host:'xxx'},{_id:1,host:'xxy'}]};

用rs.initiatee(rsconf);來初始化集群,mongo會自動將id號小的設為primary,其他的mongod進程為secondary。

連接secondary進程,使用slaveOk()函數,來初始化從進程。

PHP中操作mongo資料庫
我們先為php加入mongo擴充(方法可看linux下的PHP )。然後,我們便可以在腳本中使用mongo類別函式庫了。

不同於其他的類庫只有一個核心類,mongo有四個類,分別是:


Mongo類,基礎類,擁有連接、關閉連接、對全域資料庫的操作方法。
mongoDB類,郵Mongo類別透過selectDB()方法得到,擁有表格級的操作方法。

MongoCollection類,一般由Mongo->dbname->collection或直接用MongoDB類別和資料庫名稱實例化得到,擁有資料的基本運算。

MongoCursor類,由MongoCollection透過find()方法得到,擁有普通的遊標遍歷作業。

以下是一個典型的mongo操作:

./mongoexport -d dataname -c tablename -f key1,key2 -q &#39;query&#39; -o ainname --csv//导出数据,默认为json格式
./mongoimport -d dataname -c tablename --type json --file ./path //导入数据,默认为json格式

更多cdnoss PHP中安裝使用mongodb資料庫相關文章請關注PHP中文網!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)