PHPにmongodbデータベースを使用するインストール

7322 ワード

従来のデータベースでは、データベースデータを操作するには大量のsql文を書く必要があります.また、不規則なデータの格納を行う場合、従来の関係型データベースのテーブル作成時に異なるフィールドの処理にも力が入らないように見えます.mongoは運に応じて生まれ、ajax技術の広範な応用、jsonフォーマットの広範な受け入れ、mongoを開発者に近づけます.
mongoの概要と応用シーン
MongoDBは、ドキュメント向けの非リレーショナル・データベース(NoSQL)で、json形式で格納されます.Mongo DBはオブジェクト指向思想(OO思想)をうまく実現し,Mongo DBでは各レコードがDocumentオブジェクトである.Mongo DBの最大の利点は、すべてのデータ永続操作が開発者がSQL文を手動で作成する必要がなく、直接メソッドを呼び出すことでCRUD操作を簡単に実現できることです.
mongoは次のシーンに適用できます.
大サイズ、低価値のデータjsonおよびオブジェクトタイプのデータを格納するWebサイトキャッシュデータコメント、サブコメントクラスには明らかな依存関係のあるデータマルチサーバデータがあり、内蔵された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は自動的に1つ追加されます.
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})                      //

索引

   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()         //

MapReduce
MapReduceはmongoに内蔵された非常に強力な遍歴操作ツールで、mapとreduceの2つの関数を実現する必要があります.

   db.runCommand( 
  
           {
             mapReduce: collection,             //
             map: function(){emit(key1,key2)},  // key1 key2
             reduce: function(key,value){},     // key value
             out: ,
             query: ,
             sort: ,
             limit: ,
             finalize: ,
             scope: ,
             jsMode: ,
             verbose:
           }
         )

もっと詳しいコマンドはmongoの中国語コミュニティでhttp://docs.mongoing.com/manual-zh/見つけます.
mongoのユーザー、データインポートエクスポート、クラスタ
ユーザー管理
MongoDBのデフォルトでは、認証はオンになっていません.サーバを起動するときに--authまたは--keyFileオプションを追加して権限を開くことができます.プロファイルを使用する場合はsecurityを使用する.义齿keyFile設定.
MongoDBは、各ロールが一般的な使用例に明確な役割を果たす独自のロールを提供します.たとえばread、readWrite、dbAdmin、rootなどのロールです.ユーザーの作成、ロールの作成、ユーザーに異なるロールの割り当て/回収を行うことで、ユーザー管理を行います.
ロールを追加する場合は、adminデータベースに管理者ロールを追加し、管理者ロールを使用して各ライブラリに異なるロールを追加します.

   use admin;(   admin   ,     ) 
  
db.createUser(
  {
    user: "username",
    pwd: "password",
    roles:
    [
      {
        role: "userAdminAnyDatabase",
        db: "admin"
      }
    ]
  }
)
use database;
db.auth('username','passwd'); , mongo 。

データインポートエクスポート
mongoが持参したツールを使用してインポート・エクスポートを行います.mongo/binディレクトリの下では、csv形式をエクスポートし、データ交換を容易にすることが望ましいです.

   ./mongoexport -d dataname -c tablename -f key1,key2 -q 'query' -o ainname --csv//    ,   json   
  
./mongoimport -d dataname -c tablename --type json --file ./path // , json

mongoデータベースクラスタ
mongodを開くときにオプションを追加--replSet replname;mongoクライアントで前のmongodプロセスに接続し、adminデータベースに入り、mongoconf変数を宣言します.
use admin; var rsconf={_id:'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クラス関数ライブラリを使用できます.
他のクラスライブラリとは異なり、コアクラスは1つしかありません.mongoには4つのクラスがあります.それぞれ:
Mongoクラス、ベースクラス、接続を閉じる、グローバルデータベースに対する操作方法を持つ.mongodyクラス、メールMongoクラスはselectDB()メソッドで得られ、表レベルの操作方法を持つ.MongoCollectionクラスは、一般にMongo->dbname->collectionまたは直接MongoDBクラスとデータベース名で実例化され、データに対する基本的な操作を有する.MongoCursorクラスは、MongoCollectionによってfind()メソッドによって得られ、通常のカーソル遍歴操作を有する.次は典型的なmongo操作です.

   $mongo=new Mongo(); 
  
$mongo->connect('host',port);
$collection=$mongo->dbname->collection;
$cursor=$collection->find();
$cursor->operate();
$mongo->close();