创建一个可以方便地尝试查询的MongoDB环境
我想方便地尝试MongoDB的查询,所以这是我构建该环境时的记录。
在寻找工具时,我根据以下三个条件进行了筛选,但很难找到同时满足这三个条件的工具,最终我选择了将Mongo Express和Jupyter Notebook组合在一起。这个组合提供了Web用户界面。
-
- 多人能够方便地通过Web用户界面访问
-
- 能够轻松输入示例数据
- 能够执行聚合查询
请提供您需要翻译的整个句子或句子上下文,以便我可以为您提供准确的中文翻译。
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” ] }
]
{ 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}]