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 (3804d)