创建一个可以方便地尝试查询的MongoDB环境

我想方便地尝试MongoDB的查询,所以这是我构建该环境时的记录。

在寻找工具时,我根据以下三个条件进行了筛选,但很难找到同时满足这三个条件的工具,最终我选择了将Mongo Express和Jupyter Notebook组合在一起。这个组合提供了Web用户界面。

    1. 多人能够方便地通过Web用户界面访问

 

    1. 能够轻松输入示例数据

 

    能够执行聚合查询

请提供您需要翻译的整个句子或句子上下文,以便我可以为您提供准确的中文翻译。

Dockerfile 的含义是什么?


FROM jupyter/scipy-notebook
ENV TZ=Asia/Tokyo
USER root
RUN pip install pymongo
USER $NB_UID

docker-compose.yml的中文释义

version: '3.1'

services:
  mongo:
    image: mongo:3
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - ./data/db:/data/db
      - ./data/configdb:/data/configdb

  mongo-express:
    image: mongo-express
    ports:
      - 8081:8081
    restart: on-failure:10
    depends_on:
      - mongo
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example

  jupyter-notebook:
    build: .
    volumes:
      - ./data/notebook:/home/jovyan/work
    ports:
      - "8888:8888"
    environment:
      JUPYTER_TOKEN: jupyter
    depends_on:
      - mongo

開発時の一時利用なので、 restart:always は設定していません。
しかし、 mongo-express がMongoDBが立ち上がる前に起動し接続エラーで落ちてしまうので、restart: on-failure:10 を設定し、再試行するようにしています。

开始运行

docker-compose up -d

MongoDBが立ち上がるのに少し、時間がかかります。

执行

使用Mongo Express投入样本数据。

访问网址:http://localhost:8081
可以轻松创建数据库、集合和文档。

使用”Create Database – Create Collection”来创建一个名为test和inventory的Collection。在New Document中复制粘贴以下内容并保存:[
{ item: “journal”, qty: 25, status: “A”, size: { h: 14, w: 21, uom: “cm” }, tags: [ “blank”, “red” ] },
{ item: “notebook”, qty: 50, status: “A”, size: { h: 8.5, w: 11, uom: “in” }, tags: [ “red”, “blank” ] },
{ item: “paper”, qty: 10, status: “D”, size: { h: 8.5, w: 11, uom: “in” }, tags: [ “red”, “blank”, “plain” ] },
{ item: “planner”, qty: 0, status: “D”, size: { h: 22.85, w: 30, uom: “cm” }, tags: [ “blank”, “red” ] },
{ item: “postcard”, qty: 45, status: “A”, size: { h: 10, w: 15.25, uom: “cm” }, tags: [ “blue” ] }
]

从Jupyter笔记本连接

访问地点:http://localhost:8888/?token=jupyter

从Jupyter notebook中访问在上面创建的测试数据。
从Jupyter notebook容器中,可以使用mongodb://root:example@mongo:27017/访问MongoDB。

比如,如果要统计按照状态分组的数量,可以按照以下方式进行。

import pymongo
client = pymongo.MongoClient('mongodb://root:example@mongo:27017/')
col = client.test.inventory

pipeline = [
    {
        "$group": {"_id": "$status", "count": {"$sum":1}}
    }
]
list(col.aggregate(pipeline)) # ==> [{'_id': 'D', 'count': 2}, {'_id': 'A', 'count': 3}]
bannerAds