TP MongoDB
Start docker
Docker will run mongodb in a container. You can optionally use node with express to expose a HTTP API.
You have two options for the HTTP API:
- run locally with node (option 1)
- run node in a container (option 2)
Option 1 (mongo containerized, node locally)
build and run MongoDB and Node.js API with orders.json
dump:
docker-compose up --build -d
if you encounter any problem (no order db), run mongo-seed
first :
docker-compose up --build -d mongo-seed
docker-compose up -d
use mongodb (mongo shell):
docker-compose exec mongo-orders mongo admin
Option 2 (mongo and node containerized)
docker-compose -f docker-compose-with-node.yml up --build -d
Use MongoDB
in mongodb shell:
show dbs;
use order;
show collections;
db.orders.find();
function pretty()
prettify the document
db.orders.find().pretty();
compter le nombre d'enregistrements:
db.orders.find().count();
il est possible d'exécuter du javascript pour ajouter des fonctionnalités supplémentaires (mais faites le maximum avec l'API de mongodb):
db.orders.find().map( obj => obj.vendors );
Use a HTTP Serveur (optional)
Using node locally (option 1)
cd api
npm install
npm start
API in Node.js available, example route http://localhost:3000/by-customer-pseudo/A**D
Using node locally (option 2)
API already available at http://localhost:8080/by-customer-pseudo/A**D
Missions
Contraintes
- Utilisation du
find()
pour les quatre premières requêtes - Utilisation du
aggregate()
pour les suivantes
Requêtes à réaliser
- liste des commandes qui ont deux sacs
- liste des commandes concernant "les-fromages-de-gaetan"
- comptez le nombre de commandes qui ont plus de quatre sacs
- affichez les pseudos des acheteurs qui ont plus de quatre sacs
- liste des commandes du client avec l'id NumberLong("1848533681975648")
- pour chaque client (id et pseudo), comptez le nombre de commandes
- pour chaque vendeur, comptez le chiffre d'affaire (indication:
$unwind
)
Vos solutions
requête 1
requête 2
requête 3
requête 4
requête 5
requête 6
requête 7