はじめに
NoSQLの筆頭として以下記事でも軽く触れたMongoDBですが
タイトルの通りコマンドから直接DBを操作することも可能なのでテキストに追記する感覚でDBに格納&検索ができます。
本記事ではデータをコマンドから操作する方法を前提知識を補足しながら記載しています。
コマンド実行環境
- Debian GNU/Linux 9
- MongoDB shell version: 3.2.11
MongoDBのインストール
apt-getにてインストール可能です。
# apt-cache show mongodb Package: mongodb ... Description-en: object/document-oriented database (metapackage) MongoDB is a high-performance, open source, schema-free document-oriented data store that's easy to deploy, manage and use. It's network accessible, written in C++ and offers the following features: ....
# apt-get install mongodb ... # which mongo /usr/bin/mongo
インストール後は自動で起動しています。
# systemctl status mongodb ● mongodb.service - An object/document-oriented database Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor prese Active: active (running) since ... Docs: man:mongod(1) Main PID: 8971 (mongod) CGroup: /system.slice/mongodb.service mq8971 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /e.. .. instance-1 systemd[1]: Started An object/document-oriented da
MongoDBをシェルから利用
mongoコマンドで接続を行い以下でデータベースを作成できます。
> use test switched to db test
そこで例えば以下コマンドを打てばデータは格納され
> db.user.insert({name:'taro', age:15});
> db.user.insert({name:'hanako', age:18});
以下コマンドで格納データが全て表示され
> db.user.find()
以下のように検索条件を絞ることもできます。(検索条件はage>=18)
> db.user.find({age:{$gte:18}}) { "_id" : ObjectId("5eb6b85e97a67a3c31c2f326"), "name" : "hanako", "age" : 18 }
MongoDBをシェル外から利用
--eval
を付ければ対話形式ではなくコマンドが実行でき、標準出力にて結果が確認できます。
# mongo --eval "db.user.find()" MongoDB shell version: 3.2.11 connecting to: test { "_id" : ObjectId("5eb6b84d97a67a3c31c2f325"), "name" : "taro", "age" : 15 } { "_id" : ObjectId("5eb6b85e97a67a3c31c2f326"), "name" : "hanako", "age" : 18 }
注意事項としては$マークをそのまま入力すると以下のようにエラーとなるので
# mongo --eval "db.user.find({age:{$gte:18}})" MongoDB shell version: 3.2.11 connecting to: test xx E QUERY [thread1] SyntaxError: invalid property id @(shell eval):1:19
以下のように\$
と入力する必要があります。
# mongo --eval "db.user.find({age:{\$gte:18}})" MongoDB shell version: 3.2.11 connecting to: test { "_id" : ObjectId("5eb6b85e97a67a3c31c2f326"), "name" : "hanako", "age" : 18 }
終わりに
JSON形式でデータを格納しているのでNode.js等と相性の良いMongoDBですが、コマンドからさくっとデータを投入して同じくコマンドから検索結果を取得できるので単体でも利用可能ですね。