Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider a5434b6e rédigé par Titouan CASTRO's avatar Titouan CASTRO
Parcourir les fichiers

mongo

parent be373be7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="s4c03@172.19.0.2" uuid="2f0e66bd-1827-4234-a228-7d779aabf45a">
<data-source source="LOCAL" name="s4c03" uuid="2c49e63a-4708-47b7-9c9e-c6c46605a21c">
<driver-ref>mongo</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.dbschema.MongoJdbcDriver</jdbc-driver>
......
db.createCollection("Véhicule")
db.createCollection("Personne")
db.createCollection("Conducteur")
db.createCollection("Trajet")
db.createCollection("Voyage")
db.createCollection("Avis")
// Insertion des données dans les collections respectives
db.Véhicule.insertMany([
{'plaque_immatriculation': 'ab123xz', 'marque': 'Skoda', 'type': 'voiture', 'energie': 'essence', 'nombre_places': 4, 'annee_mise_en_service': 1999},
{'plaque_immatriculation': 'az426bt', 'marque': 'BMW', 'type': 'voiture', 'energie': 'électrique', 'nombre_places': 5, 'annee_mise_en_service': 1987},
{'plaque_immatriculation': 'rt865gb', 'marque': 'Opel', 'type': 'voiture', 'energie': 'électrique', 'nombre_places': 6, 'annee_mise_en_service': 2005},
{'plaque_immatriculation': 'ae452df', 'marque': 'Skoda', 'type': 'voiture', 'energie': 'électrique', 'nombre_places': 4, 'annee_mise_en_service': 1995},
{'plaque_immatriculation': 'aq781rt', 'marque': 'Fiat', 'type': 'voiture', 'energie': 'essence', 'nombre_places': 4, 'annee_mise_en_service': 1999},
{'plaque_immatriculation': 'az745ad', 'marque': 'Nissan', 'type': 'voiture', 'energie': 'essence', 'nombre_places': 4, 'annee_mise_en_service': 1999},
{'plaque_immatriculation': 'z794aed', 'marque': 'Audi', 'type': 'voiture', 'energie': 'électrique', 'nombre_places': 6, 'annee_mise_en_service': 2017},
{'plaque_immatriculation': 'qw120qz', 'marque': 'Nissan', 'type': 'voiture', 'energie': 'essence', 'nombre_places': 5, 'annee_mise_en_service': 1998},
{'plaque_immatriculation': 'hj715ut', 'marque': 'Skoda', 'type': 'voiture', 'energie': 'essence', 'nombre_places': 5, 'annee_mise_en_service': 2015},
{'plaque_immatriculation': 'ed123fr', 'marque': 'Opel', 'type': 'voiture', 'energie': 'essence', 'nombre_places': 5, 'annee_mise_en_service': 2010}
])
db.Personne.insertMany([
{ 'id_personne': 0, 'nom': 'Hoareau', 'prenom': 'Jacqueline', 'adresse_rue': '9 Chem. de la Pelletterie', 'code_postal': 44000, 'nom_ville': 'Nantes' },
{ 'id_personne': 1, 'nom': 'Camus', 'prenom': 'Suzanne', 'adresse_rue': '53 Rue du Douet Garnier', 'code_postal': 44000, 'nom_ville': 'Nantes' },
{ 'id_personne': 2, 'nom': 'Fleury', 'prenom': 'Michèle', 'adresse_rue': '36 Bd Gaston Serpette', 'code_postal': 44000, 'nom_ville': 'Nantes' },
{ 'id_personne': 3, 'nom': 'Georges', 'prenom': 'René', 'adresse_rue': '1 Rue de Joyeuse', 'code_postal': 76000, 'nom_ville': 'Rouen' },
{ 'id_personne': 4, 'nom': 'Munoz', 'prenom': 'Théodore', 'adresse_rue': '24 Rue du Petit Pont', 'code_postal': 45000, 'nom_ville': 'Orleans' },
{ 'id_personne': 5, 'nom': 'Clement', 'prenom': 'Inès-Sabrine', 'adresse_rue': '21 Rue René Thomas', 'code_postal': 38000, 'nom_ville': 'Grenoble' },
{ 'id_personne': 6, 'nom': 'Launay', 'prenom': 'Henriette', 'adresse_rue': '14 Imp. de Flandre', 'code_postal': 76000, 'nom_ville': 'Rouen' },
{ 'id_personne': 7, 'nom': 'Bonneau', 'prenom': 'Roland', 'adresse_rue': '198 Rue des Postes', 'code_postal': 59000, 'nom_ville': 'Lille' },
{ 'id_personne': 8, 'nom': 'Lemaire-Simon', 'prenom': 'Sabine', 'adresse_rue': '46 Rue Ferrandière', 'code_postal': 69000, 'nom_ville': 'Lyon' },
{ 'id_personne': 9, 'nom': 'Godard', 'prenom': 'Aimée', 'adresse_rue': '6 Rue de Lurbe', 'code_postal': 33000, 'nom_ville': 'Bordeaux' },
{ 'id_personne': 10, 'nom': 'Klein', 'prenom': 'Charles', 'adresse_rue': '15 Rue Rolland', 'code_postal': 33000, 'nom_ville': 'Bordeaux' },
{ 'id_personne': 11, 'nom': 'Dupre', 'prenom': 'Alfred', 'adresse_rue': '38 Rue Volney', 'code_postal': 49000, 'nom_ville': 'Angers' },
{ 'id_personne': 12, 'nom': 'Roy', 'prenom': 'Alphonse', 'adresse_rue': '14 Rue du Planty', 'code_postal': 49300, 'nom_ville': 'Cholet' },
{ 'id_personne': 13, 'nom': 'Verdier', 'prenom': 'Cécile', 'adresse_rue': '42 Rue Bourgonnier', 'code_postal': 49000, 'nom_ville': 'Angers' },
{ 'id_personne': 14, 'nom': 'Etienne', 'prenom': 'Guy', 'adresse_rue': '2 Rue Lebas', 'code_postal': 49000, 'nom_ville': 'Angers' },
{ 'id_personne': 15, 'nom': 'Lemaire', 'prenom': 'Luc', 'adresse_rue': '12 Rue de la Hollande', 'code_postal': 49300, 'nom_ville': 'Cholet' },
{ 'id_personne': 16, 'nom': 'Gimenez', 'prenom': 'Pauline', 'adresse_rue': '12 Rue Amédée Morel', 'code_postal': 38000, 'nom_ville': 'Le Sappey en Chartreuse' },
{ 'id_personne': 17, 'nom': 'Fontaine', 'prenom': 'Agnès', 'adresse_rue': '18 Quai Jean Moulin', 'code_postal': 69000, 'nom_ville': 'Lyon' },
{ 'id_personne': 18, 'nom': 'Pruvost', 'prenom': 'Robert', 'adresse_rue': '17 Rue du Dr André Derocque', 'code_postal': 76000, 'nom_ville': 'Rouen' },
{ 'id_personne': 19, 'nom': 'Denis', 'prenom': 'Guy', 'adresse_rue': '10 Rue Kuhlmann', 'code_postal': 59000, 'nom_ville': 'Tourcoing' }
])
db.Conducteur.insertMany([
{ 'numero_agrement': 12564, 'date_agrement': '11-08-2018', 'certifie': 0, 'id_personne': 2 },
{ 'numero_agrement': 13978, 'date_agrement': '28-01-2017', 'certifie': 1, 'id_personne': 5 },
{ 'numero_agrement': 78541, 'date_agrement': '02-09-2020', 'certifie': 1, 'id_personne': 1 },
{ 'numero_agrement': 9523, 'date_agrement': '30-03-2018', 'certifie': 1, 'id_personne': 19 },
{ 'numero_agrement': 685, 'date_agrement': '29-08-2019', 'certifie': 0, 'id_personne': 11 },
{ 'numero_agrement': 85423, 'date_agrement': '15-11-2019', 'certifie': 0, 'id_personne': 10 },
{ 'numero_agrement': 78945, 'date_agrement': '20-06-2018', 'certifie': 1, 'id_personne': 17 },
{ 'numero_agrement': 74125, 'date_agrement': '29-01-2017', 'certifie': 0, 'id_personne': 13 },
{ 'numero_agrement': 4562, 'date_agrement': '14-05-2021', 'certifie': 0, 'id_personne': 8 }
])
db.Trajet.insertMany([
{ 'id_trajet': 1, 'heure_dep': '2022-02-20 20-00', 'heure_des': '2022-02-20 20-52', 'longueur': 59, 'tarif': 5, 'numero_agrement': 1, 'plaque_immatriculation': 'ab123xz', 'code_postal_dep': 44000, 'code_postal_des': 49300 },
{ 'id_trajet': 2, 'heure_dep': '2022-03-20 20-00', 'heure_des': '2022-03-20 20-52', 'longueur': 59, 'tarif': 5, 'numero_agrement': 1, 'plaque_immatriculation': 'ab123xz', 'code_postal_dep': 49300, 'code_postal_des': 44000 },
{ 'id_trajet': 3, 'heure_dep': '2022-01-19 19-00', 'heure_des': '2022-01-19 19-52', 'longueur': 59, 'tarif': 7, 'numero_agrement': 12564, 'plaque_immatriculation': 'az426bt', 'code_postal_dep': 44000, 'code_postal_des': 49300 },
{ 'id_trajet': 4, 'heure_dep': '2021-09-21 08-30', 'heure_des': '2021-09-21 12-40', 'longueur': 335, 'tarif': 25, 'numero_agrement': 78541, 'plaque_immatriculation': 'az745ad', 'code_postal_dep': 45000, 'code_postal_des': 44000 },
{ 'id_trajet': 5, 'heure_dep': '2021-09-10 07-30', 'heure_des': '2021-09-10 14-10', 'longueur': 676.1, 'tarif': 51, 'numero_agrement': 685, 'plaque_immatriculation': 'az745ad', 'code_postal_dep': 45000, 'code_postal_des': 59200 },
{ 'id_trajet': 6, 'heure_dep': '2021-08-23 11-15', 'heure_des': '2021-08-23 18-50', 'longueur': 110, 'tarif': 9.5, 'numero_agrement': 9523, 'plaque_immatriculation': 'z794aed', 'code_postal_dep': 44000, 'code_postal_des': 56000 },
{ 'id_trajet': 7, 'heure_dep': '2021-08-12 21-30', 'heure_des': '2021-08-12 23-36', 'longueur': 201, 'tarif': 18, 'numero_agrement': 85423, 'plaque_immatriculation': 'z794aed', 'code_postal_dep': 17000, 'code_postal_des': 33000 },
{ 'id_trajet': 8, 'heure_dep': '2021-08-03 09-10', 'heure_des': '2021-08-03 11-10', 'longueur': 226.8, 'tarif': 19, 'numero_agrement': 9523, 'plaque_immatriculation': 'hj715ut', 'code_postal_dep': 38700, 'code_postal_des': 39200 },
{ 'id_trajet': 9, 'heure_dep': '2021-08-12 21-30', 'heure_des': '2021-08-13 03-30', 'longueur': 587.5, 'tarif': 45, 'numero_agrement': 74125, 'plaque_immatriculation': 'qw120qz', 'code_postal_dep': 45000, 'code_postal_des': 38700 },
{ 'id_trajet': 10, 'heure_dep': '2021-08-12 15-12', 'heure_des': '2021-08-12 17-25', 'longueur': 181, 'tarif': 15, 'numero_agrement': 85423, 'plaque_immatriculation': 'qw120qz', 'code_postal_dep': 22300, 'code_postal_des': 50170 },
{ 'id_trajet': 11, 'heure_dep': '2022-08-12 15-12', 'heure_des': '2022-08-12 17-25', 'longueur': 181, 'tarif': 12564, 'numero_agrement': 10, 'plaque_immatriculation': 'az426bt', 'code_postal_dep': 22300, 'code_postal_des': 50170 }
])
db.Voyage.insertMany([
{ 'id_trajet': 1, 'id_personne': 2 },
{ 'id_trajet': 1, 'id_personne': 12 },
{ 'id_trajet': 1, 'id_personne': 15 },
{ 'id_trajet': 1, 'id_personne': 3 },
{ 'id_trajet': 3, 'id_personne': 9 },
{ 'id_trajet': 3, 'id_personne': 3 },
{ 'id_trajet': 3, 'id_personne': 6 },
{ 'id_trajet': 3, 'id_personne': 8 }
])
db.Avis.insertMany([
{ 'id_avis': 1, 'message': 'A', 'etoiles': 3, 'id_personne_envoie': 1, 'id_personne_recu': 2 },
{ 'id_avis': 2, 'message': 'B', 'etoiles': 3, 'id_personne_envoie': 3, 'id_personne_recu': 2 },
{ 'id_avis': 3, 'message': 'C', 'etoiles': 4, 'id_personne_envoie': 3, 'id_personne_recu': 2 },
{ 'id_avis': 4, 'message': 'D', 'etoiles': 4, 'id_personne_envoie': 9, 'id_personne_recu': 2 },
{ 'id_avis': 5, 'message': 'D', 'etoiles': 5, 'id_personne_envoie': 12, 'id_personne_recu': 2 },
{ 'id_avis': 6, 'message': 'A', 'etoiles': 1, 'id_personne_envoie': 13, 'id_personne_recu': 1 },
{ 'id_avis': 7, 'message': 'B', 'etoiles': 5, 'id_personne_envoie': 14, 'id_personne_recu': 1 },
{ 'id_avis': 8, 'message': 'A', 'etoiles': 5, 'id_personne_envoie': 18, 'id_personne_recu': 1 },
{ 'id_avis': 9, 'message': 'C', 'etoiles': 5, 'id_personne_envoie': 7, 'id_personne_recu': 1 },
{ 'id_avis': 10, 'message': 'C', 'etoiles': 3, 'id_personne_envoie': 5, 'id_personne_recu': 8 },
{ 'id_avis': 11, 'message': 'A', 'etoiles': 2, 'id_personne_envoie': 9, 'id_personne_recu': 8 },
{ 'id_avis': 12, 'message': 'D', 'etoiles': 1, 'id_personne_envoie': 9, 'id_personne_recu': 8 }
])
// Création de la table "ville" et insertion des données
db.createCollection("Ville")
db.Personne.find().forEach(function(personne) {
db.Ville.insert({ "code_postal": personne.code_postal, "nom_ville": personne.nom_ville })
})
// Suppression de la colonne "nom_ville" dans la table "Personne"
db.Personne.updateMany({}, { $unset: { "nom_ville": "" } })
db.Conducteur.aggregate([
{$lookup: {
from: "Personne",
localField: "id_personne",
foreignField: "id_personne",
as: "personnes"
}},
{$lookup: {
from: "Ville",
localField: "personnes.code_postal",
foreignField: "code_postal",
as: "villes"
}},
{$lookup: {
from: "Trajet",
localField: "numero_agrement",
foreignField: "numero_agrement",
as: "trajets"
}},
{$lookup: {
from: "Véhicule",
localField: "trajets.plaque_immatriculation",
foreignField: "plaque_immatriculation",
as: "vehicules"
}},
{$match:{$and:[{"vehicules.annee_mise_en_service":{$lt :2000}},{"villes.nom_ville":"Nantes"}]}},
{$project:{"numero_agrement":1,"id_personne":1,"vehicules.energie": 1}}
])
db.Conducteur.aggregate([
{$lookup: {
from: "Personne",
localField: "id_personne",
foreignField: "id_personne",
as: "personnes"
}},
{$lookup: {
from: "Ville",
localField: "personnes.code_postal",
foreignField: "code_postal",
as: "villes"
}},
{$lookup: {
from: "Avis",
localField: "id_personne",
foreignField: "id_personne_recu",
as: "avis"
}},
{$match:{$and:[{"avis.etoiles":{$not:{$lt:3}}},{"villes.nom_ville":"Nantes"}]}},
{$project:{"numero_agrement":1,"id_personne":1,"avis.etoiles": 1}}
])
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter