2016-08-12 mongoDB

8806 ワード

データベースランキング
1. oracle
             
2. mysql
             
3. microsoft Sql Server
             
4. MongoDB 
              (      )
5. PostgreSQL 
             
6. DB2 
             
7. Cassandra 
            NoSQL     ,          
8. Microsoft Access 
             
9. SQLite 
             
10. Redis 
              (       )

mongodb非関係型データベース
紹介する
MongoDBは、分散ファイルに基づいて格納されるデータベースです.
C++言語で作成されます.WEBアプリケーションに拡張性の高い高性能データストレージソリューションを提供することを目的としています.MongoDBはリレーショナル・データベースと非リレーショナル・データベースの間に介在する製品で、非リレーショナル・データベースの中で最も機能が豊富で、最もリレーショナル・データベースに似ています.彼がサポートしているデータ構造は非常に緩やかで、jsonのようなbsonフォーマットであるため、比較的複雑なデータ型を格納することができる.Mongoの最大の特徴は、彼がサポートしているクエリー言語が非常に強く、その構文はオブジェクト向けのクエリー言語に似ており、類似関係データベースの単一テーブルクエリーのほとんどの機能を実現することができ、データのインデックス化もサポートしていることです.
mongodbはドキュメントデータベースであり、ドキュメント(Bson->jsonのバイナリ化)が格納されます.
インストール
  • ダウンロードインストールパッケージ例:mongodb-linux-x 86_64-ubuntu1604-3.2.8.tgz
  • 取付
  •           cd mongodb-linux-x86_64-ubuntu1604-3.2.8/。       ,                。
        mv mongodb-linux-x86_64-ubuntu1604-3.2.8 /usr/local/mongodb。
    cd /usr/local/mongodb/bin    ,        
    bsondump*       bson  
    mongo*           (   mysql.exe)
    mongod*          (   mysqld.exe)
    mongodump*           (   ,   mysql  mysqldump)
    mongoexport*        json   csv  
    mongofiles*   GridFS  ,          
    mongoimport*        
    mongooplog*     Replication     
    mongoperf*        io  ,     mongo io    , sql server SQLIOSim
    mongorestore*        
    mongos*          (    )      ,         
    mongosniff*                           。  MongoDB   ,   tcpdump  TCP/IP      。mongosniff       。
    mongostat*        
    mongotop*         MongoDB   ,            。     ,mongotop        
    
  • MongoDB
  • を起動
                    mkdir /usr/local/mongodb/data
                  mkdir /usr/local/mongodb/logs
      mongodb    ./bin/mongod --dbpath /usr/local/mongodb/data/ --logpath /usr/local/mongodb/logs/mongodb.log --fork --port 27017
    
        
    --dbpath       
    --logpath       
    --port     (  27017)
    --fork       
    
      child process started successfully, parent exiting,        。    ps aux | grep mongo   mongodb  。
    
         :./bin/mongo
      MongoDB shell version: 3.2.8
    connecting to: test
          
    

    mongDB基本コマンド構文
    helpを入力すると、基本操作コマンドが表示されます.
    show dbs:        
    show collections:           (          ) 
    show users:    
    
    use :       ,  MS-SQL        
    db.help():         ,         
    db.foo.help():        ,        ,
                  foo         ,   foo   ,
                             
    db.foo.find():         foo        
                (      ,       ) 
    db.foo.find( { a : 1 } ):         foo      ,
                            a, a   1
    
    MongoDB          ,       。 
    
     :        “myTest”    ,   use myTest  ,
            ( :db.createCollection('user')),
               “myTest”    。  
    

    データベース共通コマンド
  • Help表示コマンドプロンプト
  • help
    db.help();
    db.yourColl.help();
    db.youColl.find().help();
    rs.help();
  • データベースuse yourDBの切り替え/作成;コレクションを作成すると、現在のデータベース
  • が自動的に作成されます.
  • はすべてのデータベースshow dbsをクエリーします.
  • 現在使用するデータベースdbを削除する.dropDatabase();
  • 指定ホストからデータベースdbをクローンする.cloneDatabase(“127.0.0.1”); 指定したマシン上のデータベースのデータを現在のデータベース
  • にクローニングする.
  • 特定のマシンから特定のデータベースデータをあるデータベースdbにコピーする.copyDatabase("mydb", "temp", "127.0.0.1");ネイティブmydbのデータをtempデータベースにコピーする
  • 現在のデータベースdbを修復する.repairDatabase();
  • 現在使用するデータベースdbを表示する.getName(); db; dbとgetNameメソッドは同じ効果で、現在使用されているデータベース
  • をクエリーできます.
  • は現在のdb状態dbを表示する.stats();
  • 現在のdbバージョン
  • db.version();
  • 現在のdbのリンクマシンアドレス
  • を表示する
    db.getMongo();
    Collectionコレクション
  • は、集約集合(table)dbを作成する.createCollection(“collName”, {size: 20, capped: 5, max: 100});
  • は、指定する名称の集約集合(table)dbを得る.getCollection("account");
  • は、現在のdbのすべての集約集合dbを得る.getCollectionNames();
  • は、現在のdbのすべての集約インデックスの状態dbを表示する.printCollectionStats();

  • ユーザー関連
  • ユーザdbを追加する.addUser("name"); db.addUser("userName", "pwd123", true); ユーザーの追加、パスワードの設定、読み取り専用かどうか
  • データベース認証、セキュリティモードdb.auth("userName", "123123");
  • 現在のすべてのユーザーshow usersを表示します.
  • ユーザdbを削除する.removeUser("userName");

  • その他
  • クエリー前のエラー情報db.getPrevError();
  • エラーレコードdbをクリアする.resetError();
  • 集計セット基本情報を表示する
  • 1.       db.yourColl.help();
    2.              db.yourColl.count();
    3.          db.userInfo.dataSize();
    4.            db db.userInfo.getDB();
    5.           db.userInfo.stats();
    6.           db.userInfo.totalSize();
    7.            db.userInfo.storageSize();
    8. Shard      db.userInfo.getShardVersion()
    9.         db.userInfo.renameCollection("users");  userInfo    users
    10.          db.userInfo.drop();
    

    集約コレクションクエリー
  • は、すべてのレコードdbをクエリーする.userInfo.find(); 相当于:select*from userInfo;デフォルトでは、各ページに20個のレコードが表示されます.表示されない場合は、it反復コマンドで次のページのデータをクエリーできます.注意:itコマンドを入力して「;」を付けることはできません.しかし、各ページの表示データのサイズをDBQueryで設定することができます.shellBatchSize= 50;これでページごとに50件の記録が表示されます.
  • は、削除後の現在の集約集合のある列の重複データdbを問い合わせる.userInfo.distinct("name"); nameの同じデータをフィルタリングするのは、select distict name from userInfoに相当します.
  • クエリーage=22のレコードdb.userInfo.find({"age": 22}); 相当:select*from userInfo where age=22;
  • クエリーage>22のレコードdb.userInfo.find({age: {$gt: 22}}); 相当:select*from userInfo where age>22;
  • age<22のレコードdbを問い合わせる.userInfo.find({age: {$lt: 22}}); 相当:select*from userInfo where age<22;
  • クエリーage>=25のレコードdb.userInfo.find({age: {$gte: 25}}); 相当:select*from userInfo where age>=25;
  • はage<=25のレコードdbをクエリーする.userInfo.find({age: {$lte: 25}});
  • クエリーage>=23、age<=26 db.userInfo.find({age: {$gte: 23, $lte: 26}});
  • クエリーnameにmongoのデータdbが含まれている.userInfo.find({name:/mongo/});//%select*from userInfo where name like'%mongo%'に相当します.
  • は、nameのmongoで始まるdbをクエリーする.userInfo.find({name:/^mongo/}); select * from userInfo where name like ‘mongo%’;
  • 指定カラムname、ageデータdbを問い合わせる.userInfo.find({}, {name: 1, age: 1}); 相当:select name,age from userInfo;もちろんnameはtrueやfalseを用いてもよいが,tureを用いた場合の河name:1の効果は同様であり,falseを用いるとnameを除外し,name以外の列情報を表示する.
  • 指定カラムname、ageデータをクエリーし、age>25 db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1}); 相当:select name,age from userInfo where age>25;
  • 年齢順昇順:db.userInfo.find().sort({age: 1}); 降順:db.userInfo.find().sort({age: -1});
  • はname=zhangsan,age=22のデータdbをクエリーする.userInfo.find({name: 'zhangsan', age: 22}); select*from userInfo where name=‘zhangsan’and age=‘22’;
  • は、最初の5つのデータdbをクエリーする.userInfo.find().limit(5); 相当于:selecttop 5*from userInfo;
  • は10以降のデータdbをクエリーする.userInfo.find().skip(10); 相当:select*from userInfo where id not in(selecttop 10*from userInfo);
  • は5-10間のデータdbをクエリーする.userInfo.find().limit(10).skip(5); ページングに使用できます.limitはpageSize、skipは何ページ目*pageSize
  • です.
  • orクエリーdb.userInfo.find({$or: [{age: 22}, {age: 25}]}); 相当:select*from userInfo where age=22 or age=25;
  • は、第1のデータdbをクエリーする.userInfo.findOne(); 相当于:selecttop 1*from userInfo;db.userInfo.find().limit(1);
  • クエリある結果セットのレコード数db.userInfo.find({age: {$gte: 25}}).count(); 相当:select count(*)from userInfo where age>=20;
  • は、ある列に従ってdbをソート.userInfo.find({sex: {$exists: true}}).count(); 相当:select count(sex)from userInfo;

  • 索引
  • インデックスdbを作成する.userInfo.ensureIndex({name: 1}); db.userInfo.ensureIndex({name: 1, ts: -1});
  • は、現在の集約セットのすべてのインデックスdbをクエリーする.userInfo.getIndexes();
  • 総インデックスレコードサイズdbを表示する.userInfo.totalIndexSize();
  • は、現在のセットのすべてのindex情報dbを読み出す.users.reIndex();

  • 5、指定インデックスdbを削除する.users.dropIndex("name_1");
  • すべてのインデックスdbを削除する.users.dropIndexes();

  • コレクションデータの変更、追加、削除
  • 追加
  • db.users.save({name: ‘zhangsan’, age: 25, sex: true}); 追加されたデータのデータ列は、固定されていません.追加されたデータに基づいて
  • dbを修正する.users.update({age: 25}, {$set: {name: 'changeName'}}, false, true); 相当:update users set name=‘changeName’where age=25;db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true); update users set age=age+50 where name=‘Lisi’;db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true); update users set age=age+50、name=‘hoho’where name=‘Lisi’;
  • dbを削除する.users.remove({age: 132});
  • クエリ修正削除db.users.findAndModify({ query: {age: {$gte: 25}}, sort: {age: -1}, update: {$set: {name: 'a2'}, $inc: {age: 2}}, remove: true }); db.runCommand({
    findandmodify : "users", 
    
    query: {age: {$gte: 25}}, sort: {age: -1}, update: {$set: {name: 'a2'}, $inc: {age: 2}}, remove: true });