DataBaseJavaScriptLinuxMongoDBnode.jsサーバー構築プログラム

MongoDB

1.MongoDBをインストール。

Windowsはここからダウンロードしてインストール。

C:\Program Files\MongoDB\Server\バージョン\bin

にpathを設定。

2.データベース用ディレクトリの作成

アプリケーションのホームディレクトリ以下にMongoDBが利用するデータ保存用ホルダーを作成する。

mkdir db

このディレクトリ内は基本触らないようにする。

mongod --dbpath db

で起動。

3.MongoDBの操作

MongoDBのプロセスが動いている状態で

mongo

をコマンドプロンプトに入力。

4.MongoDBの基本

データベース、コレクション、ドキュメントという階層構造になっています。スキーマが不要で、データ構成の変化に柔軟に対応できる。コレクションのメソッドを使用してCRUD操作します。MongoDBは変数や制御構造、カーソルが使用できます。

例としてサイトのアカウントのユーザー情報を構造的にみると

データベース名:データベース

ユーザー情報:コレクション

ユーザーの個人情報:ドキュメント

となり、ユーザー情報は1人以上のユーザーで構成され、その集まりがアカウント全体のデータベースとなります。各自のメールアドレス、年齢などはドキュメントになります。

5.Mongoのクエリ

データベース操作

データベース作成

>use データベース名

データベース参照

>show dbs

統計情報

>db.stats()

データベース削除

>use データベース名
>db.dropDatabase()
コレクション操作

コレクション(テーブル)作成

自動生成、もしくは

>db.createCollection("作成するコレクション")

コレクション(テーブル)変更

自動生成

コレクション(テーブル)名参照

>show collections

コレクションの統計情報

>db.コレクション名.stats()

コレクション(テーブル)のデータ削除 (コレクションは残ります)

>db.データ削除するコレクション名.remove({})

コレクション(テーブル)削除 (コレクションごと中のデータも削除

>db.削除するコレクション.drop()

Cappedコレクション

コレクション内に入るデータを上限設定したコレクション。

データ量が上限に達すると、古いドキュメントから順に削除されていきます。

データ量の他に、データ件数に上限を持たせることもできる。

# 作成例
>db.createCollection("コレクション名", {capped: true, size: データーサイズの上限, max: 上限数})
# 通常のコレクションからのCappedコレクションへの設定変更
>db.runCommand({"convertToCapped": "コレクション名", size: データサイズの上限})

注意点はCappedコレクションはシャーディングできないので考慮して設定する必要があります。

ドキュメント操作

挿入

>db.コレクション名.insert({})

データ取得

>db.コレクション名.find()

条件付きで取得

# categoryというフィールドにAを持っている
>db.コレクション名.find({"category": "A"})

# ageが30以下のデータを取得 $lte: less than or equal (~以下)
>db.コレクション名.find({"age" :{$lte :30}})

# categoryというフィールドにAを持っている、かつageが30以下 $and: (かつ)
>db.コレクション名.find({$and: [{"category": "A"}, {"age": {$lte: 30}}]})

# categoryというフィールドにAかCを持っている $or: (もしくは)
>db.コレクション名.find({$or: [{"category": "A"}, {"category": "C"}]})

# emailがinfo@example.com以外のデータを取得 $ne: not equal (等しくない)
>db.コレクション名.find({"email": {$ne :"info@example.com"}})

# ageが10,20,30,40のいずれかを持っている $in: 逆の条件は$nin
>db.コレクション名.find({"age": {$in: [10, 20, 30, 40]}})

その他の比較演算子

名称 書式 意味
未満(age < 20) $lt less than
超過(age > 20) $gt greater than
以上(age >= 20) $gte greater than or equal
等しい(age == 20) $eq equal

最初にヒットしたデータの取得

>db.コレクション名.findOne({検索条件})

重複なしで検索

>db.コレクション名.distinct("検索条件")

重複なし検索の件数

>db.コレクション名.distinct("検索条件").length

並び替え

# nameを昇順、ageを降順に並び替え
>db.コレクション名.find().sort({ name : 1, age: -1})

件数表示

>db.コレクション名.count()

指定件数表示

>db.コレクション名.find().limit(件数)

 

更新

>db.コレクション名.uodate(condition, operation, upsert, multi)

upsert: true時にconditionに一致するデータが無い時は新たにデータが登録される。

multi: trueの時に、conditionに一致したすべてのデータを書き換える。

node.js向けに開発されたMongoDBアクセスライブラリmongooseをインストールします。mongooseはMongoDBにスキーマを定義して利用する。スキーマはデータ構造を一律に同様にする仕組み。

6.mongooseのインストール

npm install -g mongoose --save

アプリ名.jsに以下の記述をして、mogooseをExpressで利用できるようにする。

var mongoose = require('mongoose');

mongoose.connect()の第1引数には接続するmongoDBのURLを渡す。以下の場合はMongoDBがdefaultで使用するPort:27017のchatappというデータベースに接続することを指定している。

 

コメントを残す