前書き
MongoDBは、無料でオープンソースのドキュメント指向データベースです。 従来のテーブルベースのリレーショナルデータベース構造に依存しないため、NoSQLデータベースとして分類されます。 代わりに、動的スキーマを持つJSONのようなドキュメントを使用します。 リレーショナルデータベースとは異なり、MongoDBは、データベースにデータを追加する前に事前定義されたスキーマを必要としません。 更新されたスキーマを使用して新しいデータベースをセットアップすることなく、いつでも必要に応じてスキーマを変更できます。
このチュートリアルでは、CentOS 7サーバーにMongoDB Community Editionをインストールする方法を説明します。
前提条件
このチュートリアルを実行する前に、 `+ sudo +`特権を持つ通常の非rootユーザーがいることを確認してください。 これらの権限を持つユーザーを設定する方法については、ガイドhttps://www.digitalocean.com/community/tutorials/how-to-create-a-sudo-user-on-centos-quickstart [ CentOSでSudoユーザーを作成する方法]。
ステップ1 – MongoDBリポジトリの追加
`+ mongodb-org +`パッケージは、CentOSのデフォルトリポジトリ内に存在しません。 ただし、MongoDBは専用のリポジトリを保持しています。 サーバーに追加しましょう。
`+ vi `エディターで、CentOSのパッケージ管理ユーティリティである ` yum `の ` .repo +`ファイルを作成します。
sudo vi /etc/yum.repos.d/mongodb-org.repo
次に、MongoDBのドキュメントのhttps://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/#configure-the-package-management-system-yum[Red Hatにインストール]セクションにアクセスします。そして、最新の安定版リリースのリポジトリ情報をファイルに追加します。
/etc/yum.repos.d/mongodb-org.repo
[mongodb-org-]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org//x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-.asc
ファイルを保存して閉じます。
先に進む前に、MongoDBリポジトリが `+ yum `ユーティリティ内に存在することを確認する必要があります。 ` repolist +`コマンドは有効なリポジトリのリストを表示します:
yum repolist
Output. . .
repo id repo name
base/7/x86_64 CentOS-7 - Base
extras/7/x86_64 CentOS-7 - Extras
updates/7/x86_64 CentOS-7 - Updates
. . .
`+ MongoDB Repository +`を配置したら、インストールを進めましょう。
ステップ2 – MongoDBのインストール
`+ yum `ユーティリティを使用して、サードパーティのリポジトリから ` mongodb-org +`パッケージをインストールできます。
sudo yum install mongodb-org
2つの `+ Is this ok [y / N]:`プロンプトがあります。 1つ目はMongoDBパッケージのインストールを許可し、2つ目はGPGキーをインポートします。 MongoDBの発行者はソフトウェアに署名し、「 yum 」はキーを使用してダウンロードしたパッケージの整合性を確認します。 各プロンプトで、「 Y 」と入力し、「 ENTER +」キーを押します。
次に、 `+ systemctl +`ユーティリティを使用してMongoDBサービスを開始します。
sudo systemctl start mongod
このチュートリアルではこれらを使用しませんが、 `+ reload `および ` stop +`コマンドを使用してMongoDBサービスの状態を変更することもできます。
`+ reload `コマンドは、 ` mongod `プロセスが設定ファイル ` / etc / mongod.conf +`を読み取ることを要求し、再起動を必要とせずに変更を適用します。
sudo systemctl reload mongod
`+ stop `コマンドは、実行中のすべての ` mongod +`プロセスを停止します。
sudo systemctl stop mongod
`+ systemctl `ユーティリティは ` start `コマンドの実行後に結果を提供しませんでしたが、 ` tail `コマンドで ` mongod.log +`ファイルの終わりを見るとサービスが開始したことを確認できます:
sudo tail /var/log/mongodb/mongod.log
Output. . .
-
waiting for a connection *の出力は、MongoDBが正常に起動し、MongoDBシェルでデータベースサーバーにアクセスできることを確認します。
mongo
シェルからMongoDBを操作する方法を学習するには、* db *オブジェクトのメソッドのリストを提供する `+ db.help()+`メソッドの出力を確認できます。
db.help()
OutputDB methods:
db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ]
db.auth(username, password)
db.cloneDatabase(fromhost)
db.commandHelp(name) returns the help for the command
db.copyDatabase(fromdb, todb, fromhost)
db.createCollection(name, { size : ..., capped : ..., max : ... } )
db.createUser(userDocument)
db.currentOp() displays currently executing operations in the db
db.dropDatabase()
. . .
+ mongod`プロセスをバックグラウンドで実行したままにしますが、
+ exit`コマンドでシェルを終了します:
exit
OutputBye
ステップ3 –起動の確認
データベース駆動型アプリケーションはデータベースなしでは機能できないため、MongoDBデーモン `+ mongod +`がシステムで起動することを確認します。
`+ systemctl +`ユーティリティを使用して、起動ステータスを確認します。
systemctl is-enabled mongod; echo $?
ゼロの出力は、有効なデーモンを確認します。 ただし、1つは、起動しない無効なデーモンを確認します。
Output. . .
enabled
デーモンが無効になった場合、 `+ systemctl +`ユーティリティを使用して有効にします:
sudo systemctl enable mongod
これで、システムの再起動後に自動的に開始されるMongoDBの実行中のインスタンスができました。
ステップ4 –サンプルデータセットのインポート(オプション)
他のデータベースサーバーとは異なり、MongoDBの `+ test +`データベースにはデータがありません。 実稼働データを使用して新しいソフトウェアを試したくないので、「https://docs.mongodb.com/getting-started/shell/import-data/ [サンプルデータセットのインポート]」からサンプルデータセットをダウンロードします。 「Getting Started with MongoDB」ドキュメントのセクション。 JSONドキュメントにはレストランのコレクションが含まれています。これを使用して、MongoDBとのやり取りを練習し、機密データへの害を回避します。
書き込み可能なディレクトリに移動することから始めます。
cd /tmp
`+ curl +`コマンドとMongoDBからのリンクを使用して、JSONファイルをダウンロードします。
curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
`+ mongoimport `コマンドは、データを* test *データベースに挿入します。 `-db `フラグは使用するデータベースを定義し、 `-collection `フラグは情報をデータベース内のどこに保存するかを指定し、 `-file +`フラグはコマンドを実行するファイルを指示しますインポートアクション:
mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json
出力は、 `+ primer-dataset.json +`ファイルからのデータのインポートを確認します:
Outputconnected to: localhost
imported 25359 documents
サンプルデータセットを配置したら、それに対してクエリを実行します。
MongoDBシェルを再起動します。
mongo
シェルはデフォルトで `+ test +`データベースを選択します。これはデータをインポートした場所です。
`+ find()`メソッドを使用して* restaurants *コレクションをクエリし、データセット内のすべてのレストランのリストを表示します。 コレクションには25,000を超えるエントリが含まれているため、オプションの ` limit()`メソッドを使用して、クエリの出力を指定した数に減らします。 さらに、 ` pretty()+`メソッドは、改行とインデントを使用して情報を人間が読みやすくします。
db.restaurants.find().limit( 1 ).pretty()
Output{
"_id" : ObjectId("57e0443b46af7966d1c8fa68"),
"address" : {
"building" : "1007",
"coord" : [
-73.856077,
40.848447
],
"street" : "Morris Park Ave",
"zipcode" : "10462"
},
"borough" : "Bronx",
"cuisine" : "Bakery",
"grades" : [
{
"date" : ISODate("2014-03-03T00:00:00Z"),
"grade" : "A",
"score" : 2
},
{
"date" : ISODate("2013-09-11T00:00:00Z"),
"grade" : "A",
"score" : 6
},
{
"date" : ISODate("2013-01-24T00:00:00Z"),
"grade" : "A",
"score" : 10
},
{
"date" : ISODate("2011-11-23T00:00:00Z"),
"grade" : "A",
"score" : 9
},
{
"date" : ISODate("2011-03-10T00:00:00Z"),
"grade" : "B",
"score" : 14
}
],
"name" : "Morris Park Bake Shop",
"restaurant_id" : "30075445"
}
サンプルデータセットを引き続き使用してMongoDBに慣れるか、 `+ db.restaurants.drop()+`メソッドで削除できます。
db.restaurants.drop()
最後に、 `+ exit +`コマンドでシェルを終了します:
exit
OutputBye
結論
このチュートリアルでは、サードパーティのリポジトリを `+ yum +`に追加し、MongoDBデータベースサーバーをインストールし、サンプルデータセットをインポートし、簡単なクエリを実行する方法を説明しました。 MongoDBの機能の表面をかろうじてスクラッチしました。 いくつかの*コレクション*を使用して独自のデータベースを作成し、それらに多くの*ドキュメント*を入力して、堅牢なアプリケーションの構築を開始できます。