我想用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の名前を設定。

スクリーンショット 2018-12-02 21.56.07.png

不需要编写查询,很方便地创建简单的图表,这真是太方便了。
通过类似的简单步骤,使复杂的 JSON 更易操作和可视化。

接下来是后编。

引用资料

以下是两个网址。第一个网址是关于MongoDB Shell eval的,提供了有关如何使用MongoDB Shell eval的信息。第二个网址是关于MongoDB Shell的,包含了一些关于MongoDB Shell的有用信息。

第三天的项目是@machinanette的“使用micro:bit控制圣诞节玩具”!

广告
将在 10 秒后关闭
bannerAds