mongoDBを勉強してみた

mongoDBを勉強してみた手軽に使えるdbを作りたいと思ってmongoDBを勉強してみることにしました。今回もとりあえずはドットインストールで概要を掴みたいと思います。

インストール

その前にインストールです。参考URLを元にhomebrewでインストールしました。

勉強開始

- MongoDB入門 (全14回) – プログラミングならドットインストール

レッスンではvagrantの仮想環境を作成してその中で行われていますが、僕はmacで気軽に弄りたかったのでmacにインストールして環境を構築しました。

用語

  • Database
    • Collection : データの塊(tableに相当)
      • Document : 個々のデータ(recordに相当)

Database

  • 一覧: show dbs;
  • 新規作成 or 切り替え: use ___;
  • 削除: db.dropDatabase();
$ mongo mydb
> db.dropDatabase(); // データベースの削除 

これでdb作成の準備ができる。

Collection

> db.createCollection('users'); // 新規作成
> db.users.renameCollection('persons') // 編集
> show collections // Collection一覧の表示
> db.test.drop(); // Collectionの削除

Document

> db.createCollection('users');
{ "ok" : 1 }
>
> db.users.insert({name:"naoki", score:30}); // 挿入
> db.users.insert({name:"tarou", tags:["dango","saitama"]}); // 挿入
> db.users.find(); // 検索
{ "_id" : ObjectId("532c52fbfc84251a4404651c"), "name" : "naoki", "score" : 30 }
{ "_id" : ObjectId("532c5338fc84251a4404651d"), "name" : "tarou", "tags" : [  "dango",  "saitama" ] }
> db.users.count(); // カウント
2
> db.users.remove();
> db.users.find();
  • ObjectIdはユニーク性を保つために自動で挿入される値
  • insertはJavaScriptの形であればOK

データの作成

for (var i = 0; i < 4; i++) {
  db.users.insert({
    name: "user-" + i,
    team: "team-" + (i % 3),
    score: Math.floor(Math.random() * 100)
  });
}

こんな感じで挿入することができる。JavaScriptでできるなんて楽ちんに感じる。

検索

db.users.find({name:"user-1"}); // user-1のものを検索
db.users.find({name:/user-[1-3]/}); // 正規表現で検索
db.users.find({score: {$gt: 30 }}); // greater than で検索 他に$gte $lt $ne等
// and

db.users.find({
  team: "team-0",
  score: { $gt: 50}
});

db.users.find({
  $and: [
    { team: "team-0" },
    { score: { $gt: 50} }
  ]
});

// or

db.users.find({
  $or: [
    { team: "team-0" },
    { score: { $gt: 50} }
  ]
});

// in , exists

db.users.find({
  $or: [
    { team: { $in: ["team-0", "team-1"] } },
    { score: { $exists: true} }
  ]
});

// distinct

db.users.distinct('team');

// 条件

db.users.find({}, {name:1}); // 名前だけ検索

// 1件のみ

db.users.findOne({}, {_id:0});

// limit

db.users.find({}, {_id:0}).limit(3);

// sort

db.users.find({}, {_id:0}).sort({score:1});

バックアップとリストア

// バックアップ
$ mongodump -d mydb

// リストア
$ mongorestore --drop // dropオプションを付けることで上書きをする

すごい柔軟で使いやすそう。記法を覚えるのにちょっと手間取るかな。

その他参考

Pocket
LINEで送る

You may also like...