2018年11月23日

CentOS7 に MongoDB 4 Community Editionをインストールする




MongoDB 4.0マニュアル



1. パッケージ管理システム(yum)のリポジトリの追加の設定

gedit /etc/yum.repos.d/mongodb-org-4.0.repo

[mongodb-org-4.0]
name=MongoDB Repository
gpgcheck=1
enabled=1
01.png
02.png

2. MongoDBをインストール
sudo yum install -y mongodb-org
03.png

MongoDBの特定のリリースをインストールするには、各コンポーネントパッケージを個別に指定し、次の例のようにバージョン番号をパッケージ名に追加します。

sudo yum install -y mongodb-org-4.0.4 mongodb-org-server-4.0.4 mongodb-org-shell-4.0.4 mongodb-org-mongos-4.0.4 mongodb-org-tools-4.0.4

使用可能なバージョンのMongoDBを指定できます。しかしyum 、新しいバージョンが利用可能になったときにパッケージをアップグレードします。意図しないアップグレードを防ぐために、パッケージを固定してください。パッケージを固定するには、次のexcludeディレクティブを/etc/yum.confファイルに追加します。

exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools



3. MongoDBを起動します。
次のコマンドを実行すると、プロセスを開始
sudo service mongod start
04.png



4. MongoDBの起動を確認する
mongodで、ログファイルの内容を確認することで、プロセスが正常に開始されたを確認

cat /var/log/mongodb/mongod.log

[initandlisten] waiting for connections on port <port>
05.png

5. どこ<port>ポートが中に設定され/etc/mongod.conf、27017デフォルトで。
オプションで、MongoDBがシステムの再起動後に次のコマンドを発行して起動することを保証することができます:

sudo chkconfig mongod on
06.png

6. MongoDBを停止します。
必要に応じて、mongod次のコマンドを発行してプロセスを停止することができます。

sudo service mongod stop


7. MongoDBを再起動します。
mongod次のコマンドを発行して、プロセスを再開できます。

sudo service mongod restart

/var/log/mongodb/mongod.logファイル内の出力を見て、エラーまたは重要なメッセージについてプロセスの状態に従うことができます。


8. MongoDBを使い始める。
mongoシェルと同じホストマシンでシェルを起動します mongod。デフォルトのポート27017を使用してローカルホスト上で実行されているmongoコマンドラインオプションに接続するコマンドラインオプションなしでシェルを 実行できますmongod:

mongo
exit
10.png

9. 郵便番号データダウンロード

11.png

展開(解凍)します
13.png
KEN_ALL.CSVを、テキストエディターで開きます
12.png
文字コード、改行コード、名前を変えて、KEN_ALL_UTF8.CSVとして保存
13.png


10. データをインポート
mongoimport -d test1 -c zips --type csv --fields zipcode,perfecture,city,town,pref_rome,city_rome,town_rome /root/ダウンロード/KEN_ALL.CSV
14.png
mongoimport -d test2 -c zips --type csv --fields zipcode,perfecture,city,town,pref_rome,city_rome,town_rome /root/ダウンロード/KEN_ALL_UTF8.CSV
15.png
パス名/ファイル名などを間違うと、下記のようなメッセージ
Failed: open /root/ダウンロード/KEN_ALL_UTF.CSV: no such file or directory
imported 0 documents


11. Firewall 27017 port をopen
firewall-cmd --add-port=27017/tcp --zone=public --permanent
firewall-cmd --reload             
21.png


12. FireDACで、接続
---------------------------
エラー
---------------------------
[FireDAC][Phys][Mongo]Failed to connect to target host: 192.168.24.63:27017.
---------------------------
OK   
---------------------------
m01.png


11. 外部からの接続許可設定

gedit /etc/mongod.conf

全てのアドレスからの接続を許可
  bind_ip=0.0.0.0
アドレスを指定して接続を許可
  bind_ip=127.0.0.1,192.168.56.101
  bindIp : [127.0.0.1,192.168.24.52]
ユーザ認証をする場合は、
  auth = true
22.png
変更して保存
23.png
再起動してみる
service mongod restart
24.png
書き方が違うとエラーになる
Redirecting to /bin/systemctl restart mongod.service
Job for mongod.service failed because the control process exited with error code. See "systemctl status mongod.service" and "journalctl -xe" for details.

(リダイレクト/ bin / systemctlのmongod.serviceの再起動
制御プロセスがエラーコードで終了したため、mongod.serviceのジョブが失敗しました。 詳細については、「systemctl status mongod.service」および「journalctl -xe」を参照してください。)

となるので、とりあえず、
 bind_ip=0.0.0.0
service mongod restart
26.png
Redirecting to /bin/systemctl restart mongod.service
(リダイレクト mongod.serviceの再起動)
となれば、OK


12. 再度 FireDACで、接続
m02.png


実行時エラー
---------------------------
Project1
---------------------------
[FireDAC][Comp][Mongo]-2110. データセット [FDMongoQuery1] を開けません。CollectionName が割り当てられている必要があります.
---------------------------
OK   
---------------------------
e1.png

d1.png

d2.png



13.
mongo

use test1
01.png
db.zips.findOne({zipcode:1101})
02.png
db.zips.find().limit(10)
03.png
(ダウンロードしたままだと、文字化け)


use test2
12.png
db.zips.findOne({zipcode:1101})
--------------------------------------
> use test2
switched to db test2
> db.zips.findOne({zipcode:1101})
{
"_id" : ObjectId("5bf7c409df85df219eac8930"),
"zipcode" : 1101,
"perfecture" : "064  ",
"city" : 640941,
"town" : "ホツカイドウ",
"pref_rome" : "サツポロシチユウオウク",
"city_rome" : "アサヒガオカ",
"town_rome" : "北海道",
"field7" : "札幌市中央区",
"field8" : "旭ケ丘",
"field9" : 0,
"field10" : 0,
"field11" : 1,
"field12" : 0,
"field13" : 0,
"field14" : 0
}
13.png
db.zips.find().limit(10)
14.png


 db.zips.find().limit(1)
 db.zips.find({city:5410056}).limit(1)

 db.zips.findOne({city:5410056})
 db.zips.findOne({field7:'大阪市中央区'})
 db.zips.findOne({zipcode:1101})

 db.zips.find({city:5410056}).limit(1).explain()

db.zips.find({},{city: 1, field7: 1})

db.zips.find({city: 5410056})

LIKE検索%% ??
db.zips.find({city: /5410/})
db.zips.find({city: /'5410'/})
db.zips.find({field7:'大阪市中央区'})
db.zips.find({field7:'/大/'})

db.zips.find({}).sort({city: 1})

db.zips.find().count()


14.
スクロールしていくと、エラー
---------------------------
Project1
---------------------------
[FireDAC][DatS]-32. 変数長の列 [field8] でオーバーフローが発生しました。値の長さ - [15]、列の最大長 - [13].
---------------------------
OK   
---------------------------
e03.png









posted by a23 at 15:07| Comment(0) | noSQL
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: