我想用MongoDB和Metabase使JSON文件更易读
本文是Nifty集团Advent Calendar 2018的第二天文章。
第一天是@winterwind的文章,标题为当图片保存到S3时自动执行Amazon Rekognition图像分析。
做过的事情
-
- MongoDBにJSONデータを突っ込む
-
- metabase(https://www.metabase.com/) とMongoDBを連携する
- というのをDocker上で完結させる
这样的感觉。相当容易就能做到。
直到启动
- docker hubからMongoDBのimageをpullする
$ docker pull mongo
2. 也要拉取Metabase的镜像
$ docker pull metabase/metabase
编写docker-compose.yml文件
version: "2"
services:
metabase:
container_name: "metabase"
image: metabase/metabase
ports:
- "3000:3000"
db:
container_name: "mongo"
image: mongo
ports:
- "27017:27017"
volumes:
- ./:/tmp
Mongo的卷,需要在主机上指定一个包含要存放在Mongo中的JSON文件的目录,而在容器中则指定为tmp。由于IPASS本地环境,暂时不需要。
4. 开启容器
$ docker-compose up
现在环境已经准备好了。非常简单。Docker真是太棒了……。
现在MongoDB容器已经在后台启动了。
コンテナの中に入る
$ docker exec -it mongo /bin/bash
# cd tmp
# ls
hoge.json
コンテナ起動時に指定したディレクトリに移動してlsするとローカル側のファイルがあることが確認できるはずです。
将json文件输入
使用mongoimport命令可以导入JSON文件。
mongoimport --db db_name --collection collection_name --type json --file hoge.json
数据库名和集合名可以任意取名。
集合类似于MySQL中的表。
即使没有创建数据库或表的操作,也可以通过插入完成。
确认其内容
输入”mongo”可以启动Mongo命令行。
# mongo
MongoDB shell version v4.0.4
connecting to: mongodb://127.0.0.1:27017
後略
---
> use db_name
switched to db db_name
> db.collection_name.find()
# 結果が出る
进行Metabase的设置。
您可以输入任意姓名、电子邮件地址等信息。在数据库添加部分的设置如下:
-
- 名前
dashbordで見つけやすい名前
ホスト
MongoDBのコンテナの名前。上記のymlだと”mongo”にしています。
ポート
ymlに記述した値。上記だと27017
データベース名
JSONをinsertしたときにつけたDBの名前を設定。
不需要编写查询,很方便地创建简单的图表,这真是太方便了。
通过类似的简单步骤,使复杂的 JSON 更易操作和可视化。
接下来是后编。
引用资料
以下是两个网址。第一个网址是关于MongoDB Shell eval的,提供了有关如何使用MongoDB Shell eval的信息。第二个网址是关于MongoDB Shell的,包含了一些关于MongoDB Shell的有用信息。
第三天的项目是@machinanette的“使用micro:bit控制圣诞节玩具”!