-
MongoDBについて(DBを操作する)
- 2016年1月12日
- mongoDB
前回→MongoDBについて(Windowsへのインストール)
皆さん。こんにちは。
元RDB使いの中野です。
前回MongoDBをインストールしましたので、
DBを実際に操作したいと思います。
1.DBを操作するコマンド
イントロとしては薄い本 ・http://www.cuspy.org/diary/2012-04-17/the-little-mongodb-book-ja.pdf 詳細は公式のマニュアル ・https://docs.mongodb.org/manual/reference/method/ 等をご参照ください。 基本的なものを以下に記載します。 今いるデータベースの確認>db;
データベースの表示
>show dbs;
データベースの切替
>use localdb;
データベースの作成
>use localdb;
>db.createCollection("transactions");
※コレクションを作成すると、dbがない場合、作成されます。
データベースの削除
>db.dropDatabase();
コレクションの作成
>db.createCollection("transactions");
コレクションの確認
>show collections;
データの挿入
>db.transactions.insert({"name":"XXXXX"});
データの更新
>db.transactions.update({"name":"XXXXX"}, {$set:{"data":"XXXX"}});
知っていると使えそうなもの
カラムの削除
>db.transactions.update({"_id":XXXX}, $unset:{"colname":1}});
カラムのリネーム
>db.transactions.update({"_id":XXXX}, $rename:{"oldcolname":"newcolname"}});
2.DBRefを使ってみる
mongoDBはNoSQLの一種なので、RDBのようには使えません。 とは言え、マスタとトランザクションのような持ち方をしたい時もあると思います。 その際に、ドキュメント間でリンクを持ち、外部結合のような形で参照できる機構がDBRefです。 実際にやってみましょう。 前提として ・商品(collection : products) マスタとして、名称(name)、金額(amount)を持ちます ・注文(collection : orders) トランザクションとして、個数(count)を持ちます また、商品へのリンクを持ちます。 商品は以下を用意しました。 商品へのリンクは、DBRefを使います。 以下のコマンドで、トランザクションを登録します。>db.orders.insert({"count":20},"ref_id":new DBRef("products",new ObjectId("XXXXXXXXXX"))});
>db.orders.insert({"count":10},"ref_id":new DBRef("products",new ObjectId("XXXXXXXXXX"))});
DBRefは1つ目の引数にcollection名、2つ目の引数に参照元のObjectIdを指定することでリンクを持つことができます。
上記の場合、1つ目はwashing machine 、2つ目はelectric fanを商品に指定したとします。
登録されたordersは以下の様になります。
DBRef経由で登録したことで、$refと$idが自動的に登録されていることがわかります。
参照する際は、mongoDBのコマンド(機能)ではなく、
クライアント側のドライバを経由して、参照します。
今回はPHPを使って照会してみます。
前提として、ローカルにPHP及びMongoDBのドライバがセットアップされていることが必要です。
PHPについては、XAMPPを使うと簡単にインストールできます。
・https://www.apachefriends.org/download.html
MongoDBのPHPドライバのインストールついては、以下が参考になります。
・http://php.net/manual/ja/mongo.installation.php
PHPではMongoDBRefクラスを使って参照します。
getの1つ目の引数にはdb、2つ目の引数にはDBRefを指定します。
用意したPHPのPGMは以下です。
実行した結果は以下のようになりました。
それぞれ、指定した商品が紐づいているのがわかります。
この機構を使えば、トランザクションからマスタを結合して照会することができるため、
RDB的なイメージでも使えそうですね。この記事を書いた人 : 中野健一
スタッフブログタグ:
AWS bluebird css CSV docker docker compose electron ES6 es2015 Git Heroku ITコンサルティング JavaScript justinmind less mongoDB Node.js php PostgreSQL Private Space Promise React react-router reactjs Salesforce scss Selenium Builder selenium IDE Selenium WebDriver stylus TypeScript VirtualBox VisualStudioCode vue vuejs webpack システム開発プロジェクト セキュリティ ワイヤーフレーム 上流工程 卒FIT 帳票 要件定義 設計 電力小売業界
一覧へ戻る
AWS bluebird css CSV docker docker compose electron ES6 es2015 Git Heroku ITコンサルティング JavaScript justinmind less mongoDB Node.js php PostgreSQL Private Space Promise React react-router reactjs Salesforce scss Selenium Builder selenium IDE Selenium WebDriver stylus TypeScript VirtualBox VisualStudioCode vue vuejs webpack システム開発プロジェクト セキュリティ ワイヤーフレーム 上流工程 卒FIT 帳票 要件定義 設計 電力小売業界