29/09/2021
Base de données NOSQL (MONGODB)
MongoDB university
Install MONGO DB sur le site internet official (package MSI)
Aller dans « modifier les variables » sur la barre de recherche Windows
Cliquer sur « variable d’environnement »
Et faire les modifs dans « path »
Ajouter le chemin vers du disque local :C qui suit vers MongoDB Tools/ Server jusqu’à « Bin »
Dans le CMD tester la commande : « mongo - -version »
Exemple de base de données MONGODB
Mongo Atlas : visualiser les bases de données, modifier et gérer les bases.
Mongo Atlas -> Collections -> sample training ou sample_training posts (ce sont des documents)
Les documents ont tous une propriété underscore ( _id )
Pourquoi MongoDB ? Gestionnaire de base de données, très permissif, SGBD (système de gestion de base de
données) orienté document, la puissance et la simplicité à traité les données, permettre de faire des
agrégations pour filtrer/modifier les données et mettre à jour les bases.
C’est possible de faire cela avec MongoDB mais ce n’est pas conseiller
Format JSON toujours en double guillemet dans les collections
Exercices :
1. Pour entrer dans le file des données :
mongoimport --db newyork --collection restaurants --file "C:\Users\rooks\OneDrive\Documents\Efrei\Exo
Christophe\MongoDB\data\[Link]" dans le PowerShell
2. Méthode CRUD (Create, Read, Update et Delete) – MQL MongoDB Query Language
Taper : mongo -> show dbs -> use videoclub -> [Link]
show collection -> [Link](« films »)
[Link](
« titre » : « lord of the rings »,
« durée » : 186,
},
« titre » : « Star Wars »,
« durée » : 165,
},
]
-> [Link] -> [Link]().pretty() pour voir ce qu’il y a dans chaque variable
-> [Link]({ … })
-> [Link]().count()
-> [Link]().limits()
-> [Link]({« titre » : « la grande vadrouille »}, { $set : {« durée » : 665},
$currentDate : {lastModified : true} })
-> [Link]({« titre » : « Matrix Reloaded »}, {$set : {« [Link] » :
« l’Hermite », « [Link] » : « Thierry »}})
-> [Link]()
-> [Link]()
Champs addFields : ajouter un champs
Créer des variables dans le Shell de mongo :
const today = new Date().toLocaleDateString('fr-FR');
[Link]({
"titre": "test variables",
"durée": today
}
)
Query operations : Query and Projection Operators — MongoDB Manual
IT : pour afficher le reste des résultats
Les Indexes en base de données sont existantes pour faciliter la recherche lors de la requête grâce au scan de
collections lors de grande base de données (ex : [Link]({ items : 1, quantity : 1 }, {name :
« … »} ) )
mongoimport --db paris --collection piscines --file "./data/piscines_paris.json" - -drop (afin de rajouter le bon
file dans une db)
MQL = MongoDB Query Language
1) Database -> db<method>
2) Collections -> [Link]()
3) Cursor -> [Link]().count()
Le pipeline d’agrégation :
(Tuyau qui sert à modifier ou filtrer les données pour ensuite ouvrir ses branches vers d’autre branches)
1) Mettre à jour la collection avec une agrégation
2) Le stage d’agrégation $geoNear :
a) Compréhension, création et utilisation de l’index de types « 2d » et « 2dsphere »
b) Utilisation de $geoNear pour filtrer des documents par leur position géospatial
- Etapes (« stages ») :
$match() – $group() – $limit() – $sort() - $project() - $geoNear() - $count() - $skip()
- Opérateurs (« operators ») :
$avg - $max - $and - $or - $not - $eq - $lt / $lte - $gt / $gte - $sum ( … )
- Utilisations :
Syntaxe :
[Link]( [
{ <stage> : {operator} }
( … ) -> autre stages
])
Exemple :
[Link]( [
{ $match : {« zipCode » : 75013}},
{ $sort : {« name » : 1}},
{ $group : {« _id » : « $zipCode »,
« number » : {$sum :1}},
{ $project : {« _id : 0 »}}
])
Near = retourne les docs de la collections du plus proche à la plus éloignées, au préalable lui créer un index.
Pour créer l’index :
- Entrer dans la base de données ([Link])
[Link]( { ‘geometry ‘ : « 2sphere » }, {« name » : « 2geoIndex », « 2dsphere »} })
$geoNear (agrégation) ou $near
But : Calculer la distance entre 2 points dans l’espace en s’appuyant sur les coord. (latitudes &
longitude).
Attention ! : REQUIERT la création préalable d’un index « 2d » ou « 2dsphere » pour fonctionner !!!
[Link]({<champ GeoJson> : {type : « Point », coordinates :<lon>, <lat>}})
Syntaxe : {$near : {
$geometry : {
type : « Point », (ou [Link])
coordinates : [<longitudes>, <latitudes>]
},
[ options ]
14/10/2021
1) $setOnInsert : définir les infos d’un nouveau documents
updateMany({« zipCode » : 75013 }, {$set : {« propre » : true}}, {upsert : true})
{$setOnInsert : {« name » : « Toto », « city » : « Paris »}
2) Validator :
a. $jsonSchema : validation des données à partir d’un document JSON
b. B_ avec expression : validation des données à partir d’une expression
3) MongoCharts : démarrage & utilisation (heatmap)
Définitions :
$ = valeur
{ } = toutes les données
Int = Number (integer)
[Link]() : pour savoir ce qu’il y a dans une collection
[Link] : supprime la collection
[Link] : supprime la base de données
validationLevel : « Strict » ou « moderate »
validationError ou warn
Documentation :
- $merge (aggregation) — MongoDB Manual
- $geoNear (aggregation) — MongoDB Manual
- Aggregation Pipeline Operators — MongoDB Manual
- Download MongoDB Command Line Database Tools | MongoDB
- Calculate Distance by Latitude and Longitude using JavaScript | GeoDataSource
- Site de Regex : REGEX101 ou Regular Expressions Cheat Sheet - Almost Perfect Email Regex
- [Link]() — MongoDB Manual
- [Link]() — MongoDB Manual
Evaluation 15/10 de 14h à 17h : 11 questions sur nos connaissance de la doc et exos, pas de GeoNear, bien
relire les questions il n’y a pas de faute de frappe (renvoyer le fichier à compléter en message privé et
changer le nom du fichier pour y ajouter nom et prénom)
Comment exécuter cette fonction ? (programmation fonctionnel)
function A(arg1, arg2) {
return function (arg3) {
return function (arg4) {
[Link](arg1, arg2, arg3, arg4)
Connect mongo compass a vs code : « mongodb+srv (CLUSTER mongo Atlas => mongo Compass)
Après avoir remove une collections et vouloir réimporter : mongoimport --db mondial --
collection seas --file './data/[Link] --drop