MongoDB

初期設定など

インストール(Mac)

brew install mongodb

データ格納用ディレクトリ作成

sudo mkdir -p /data/mongodb

権限付与

chown magata /data/mongodb

DB起動

mongod --dbpath /data/mongodb

※ デフォルトは /data/db

クライアント起動

mongo


DBの作成/削除など

DB作成/切替

use DB名

DB削除

use DB名
db.dropDatabase();

現在接続しているDBの確認

db.getName()

DB一覧の確認

show dbs;


ユーザの登録/更新など

ユーザ一覧

use admin;
db.system.users.find();

ユーザ作成

db.createUser(
  {
    user:"作成したいユーザー名",
    pwd:"パスワード",
    roles:[
       { 
           "role" : "dbOwner",
            "db" : "DB名"
       }
    ]
  } 
);

ユーザ更新

use DB名;
db.updateUser(
  "ユーザー名",
  {
    roles:
    [
      {
        role: "dbOwner",
        db: "DB名"
      }
    ]
  }
);

ユーザ削除

use admin;
db.system.users.remove({"_id" : "DB名.ユーザー名"});

ユーザ認証

db.auth("admin","パスワード")


認証モードをONにしてDB起動する

/etc/mongod.conf を作成

sudo vim /etc/mongod.conf
auth = true

DB起動

mongod -f /etc/mongod.conf


コレクションの操作

存在するコレクションを確認

show collections;

コレクション作成

db.createCollection('コレクション名');

コレクション削除

db.コレクション名.drop();

索引の操作

索引の確認

db.コレクション名.getIndexes();

索引の作成(col1 に対してを索引(昇順)を作成)

db.コレクション名.ensureIndex({"col1":1});

索引の作成(col1 に対してをユニークな索引(昇順)を作成)

db.コレクション名.ensureIndex({"col1":1}, {"unique":true});

索引の作成をバックグラウンドで行う場合

db.コレクション名.ensureIndex({"col1":1}, { background: true});

例)

db.books.ensureIndex({"col1":1};
db.books.ensureIndex({"col1":1}, {"unique":true});

索引の削除

db.コレクション名.dropIndex({"col1":1});

データの操作

条件検索

db.books.find({name:"book1"});

LIKE検索

db.books.find({name:/test1/});

OR検索

db.books.find({ "$or": [ { "name": "test5" }, { "name": "test10" } ] });

AND検索

db.books.find({ "name": /9$/, "price": {$lt:10000} });

大小比較

db.books.find({price: {$gt:30000} });   // >
db.books.find({price: {$gte:30000} });  // >=
db.books.find({price: {$lt:30000} });   // <
db.books.find({price: {$lte:30000} });  // <=

IN句

db.books.find({name: {$in: ["test5", "test10"]} });

distinct

db.books.distinct("price");

1件のみ取得

db.books.findOne({name:"book1"});

選択列を指定する

db.books.find({name:/test1/}, {id:1,name:1});

sort

db.books.find().sort({name:1});   // 昇順
db.books.find().sort({name:-1});  // 降順

limit, offset

db.books.find().skip(10).limit(10);

count

db.books.count();

count

db.books.count({name:"book2"});
db.books.find({name:"book1"}).count(true);
db.books.find({name:"book1"}).length();

指定した列が存在する行数をcount

db.books.find({author : {$exists: true} }).length();

実行計画

db.books.find({name:"book1"}).explain()

集約

db.books.aggregate({$group:{ "_id" : "$price", "count" : { "$sum" : 1 } } })
db.books.aggregate({$group:{ "_id" : {"price":"$price","auther":"$auther"}, "count" : { "$sum" : 1 } } })

条件で絞ったうえで集約

db.books.aggregate( { $match: {"name":/20160420/} }, { $group: { "_id" : {"price":"$price"}, "count" : { "$sum" : 1 } } })

insert

db.books.insert({"name":"book1", price:1008});

update

db.books.update({"name":"book1"},{$set:{"price":2016} });

全てのデータをupdate

db.books.update({}, {$set: {"author" : "unknown"} }, false, true);

delete

db.books.update({}, {$set: {"author" : "unknown"} }, false, true);

upsert

db.users.update({"name": "book1"}, {$set: {"author" : "unknown"} }, true);

その他

外部ファイルを実行

mongo DB名 /path_to_command/command.js

※ フルPATHで指定?

外部ファイルを実行(mongoクライアントから)

load("command.js");

エクスポート

mongodump -d DB名 -c コレクション名

※カレントディレクトリ配下に dump/DB名というディレクトリが作成され、コレクション名.bson と コレクション名.metadata.json というファイルが作成される。

インポート

mongorestore -d DB名 -c コレクション名 コレクション名.bson

※ コレクション名.metadata.json からメタ情報も読み取って適用してくれる。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-05-08 (日) 03:12:55 (946d)