VS Code で独自拡張子のファイルにシンタックスハイライトの設定を紐付け
CData MongoDB Driverを使ってドキュメント指向NoSQLであるMongoDBをRDBライクに扱う方法
本日も、またまたMongoDBです。今回は前回使用したCData MongoDB Driverの内部的なお話。
MongoDBのようなドキュメント指向NoSQLは、アプリケーションからプログラムライクに扱う時にはスムーズにアプローチできますが、最終的に分析したい、BIツールなどで咀嚼したい、といった時にはこのスキーマレスな階層構造が邪魔をしてしまいます。
そこを、前回の記事ではCData MongoDB JDBC Driverを挟むことで、RDBライクにアクセスし、BIツールで使いやすいフラットな状態にした上で扱いました。
今回は、CData Driverがどのようにドキュメント指向NoSQLをRDBライクに扱っているのか、どんなアプローチでMongoDBのデータを解釈可能なのかを見ていきたいと思います。
詳しくは、ヘルプにも掲載している内容ですので、併せて見てもらえるといいのかなと思います。
続きを読むMongoDBのドキュメント指向NoSQLデータをCData JDBC Driver経由でYellowfinを使い可視化してみる
MongoDBのImport・Exportコマンドを試す
OpenWeatherMapで提供されているAPIのJsonをMongoDBに取り込みたいなぁと思い、勉強がてら手軽に試せるMongoImoport・Exportを使ってやってみました。
OpenWeatherMapは、APIで天気情報を提供しているサービスです。
使ったAPIは[5 day weather forecast]
http://openweathermap.org/forecast5#cityid5
CityIdで東京を指定した、以下のようなURLでJsonを取得します。appidはSignupするとFreeプランのものが取得できます。
http://samples.openweathermap.org/data/2.5/forecast?id=1850147&appid=XXXXXXXXXXXXXXXXXXXXX
ほしいのはヘッダーを除外した、listプロパティの以下の部分。
あと、このままだとオブジェクト末尾の[,]が邪魔なのでそれを、置換で調整しました。整形済みのファイルは以下のGoogle Driveにアップしています。よかったらどうぞ。
https://drive.google.com/open?id=1G3SjUFw_Nb42sESf1Lrq0tbJnzGhcjXr
インポートコマンド
ドキュメントはこちら。
mongoimport — MongoDB Manual 3.6
ローカルのMongoDBに渡すのであれば、そんなに難しいものは無いです。[--db]で対象のDB [--collection]で作成するコレクション、[--file]で対象のjsonを指定します。
mongoimport --db test --collection tokyo-weather --drop --file forecast.json
あと、はじめMongoShellにログインして実行するのかと思ったら、exeとして提供されていました。
なので、環境変数でPathを通していれば、上記コマンドで実行可能です。
エクスポートコマンド
Exportもわかりやすい
mongoexport — MongoDB Manual 3.6
mongoexport --db test --collection tokyo-weather --out tokyo-weather.json
一度MongoDBで生成されているので、自動生成IDが付与されていますね。
Windows版MongoDBのインストール・MongoShellを通してCRUDコマンドを打ってみる
というわけで前回に引き続き、MongoDBのインストールと、一通りのCRUD操作をMongoShellから打ってみたいと思います。
インストールしたのは、MongoDB 3.6.1のWindows版です。
下の公式マニュアルを参考にすれば、そこまで難しくなくインストールすることができます。
Install MongoDB Community Edition on Windows — MongoDB Manual 3.6
続きを読むMongoDB事始め。個人的まとめ
去年から触っているMongoDBですが、
あまりまとめる時間が無かったので、冬休みの娯楽として色々とまとめてみました。
Mongo DBって?
ドキュメント指向NoSQLデータベース一つです。
MongoDBではリレーショナルデータベースとは違い、以下のようなJSON(正しくはBSON)形式のデータを格納して扱うことができるデータベースです。
IDが振られたデータをRDBで言うところのレコード(MongoDBではドキュメントと呼ぶ)でBSONを管理し、この単位で基本的な操作を実行します。
{ "_id" : ObjectId("5a4c7c92b3312b72b4d719f7"), "name" : "kazuya", "age" : 30 } { "_id" : ObjectId("5a4c7ccbb3312b72b4d719f8"), "name" : "hitomi", "loves" : [ "banana", "strawberry" ] } { "_id" : ObjectId("5a4c7cd6b3312b72b4d719f9"), "name" : "yuta", "loves" : [ "apple", "strawberry" ] }
はじめに型を定義する必要は無く、JSONの形式に則って、スキーマレスにデータのCRUD操作を行うことができます。
なので、上記ドキュメントを見ると、一つ目のドキュメントで、lovesのフィールドが存在しないことがわかるかと思います。
このように途中のドキュメントからスキーマ構造を変えたり、オブジェクトを追加して階層構造を深くしたり、ということも柔軟に実施することが可能です。
続きを読む