Académique Documents
Professionnel Documents
Culture Documents
NOSQL
LP SIBD
Pr. Youssef LEFDAOUI
Pr Y.Lefdaoui
NOSQL
Slide 4
Le V de la Valeur
● Le champ _id
• Seul champ obligatoire, utilisé comme clef primaire dans une collection
● Les noms des champs ne peuvent pas commencer par un $ ou contenir le
caractère « . »
> db
db‐films
> db.dropDatabase()
{ "dropped" : "db‐films", "ok" : 1 }
> show dbs
admin 0.000GB
local 0.000GB
> db
db‐films
Pr Y.Lefdaoui NOSQL Slide 33
Bases de données (3)
Le client MongoDB permet de définir et d’exécuter du code Java Script
§ Sélectionne des documents dans une collection ou une vue et renvoie un curseur
sur les documents sélectionnés.
db.bios.find( {
birth: { $gt: new Date('1920-01-01') },
death: { $exists: false }
})
db.bios.find(
{ name: { first: "Yukihiro", last: "Matsumoto" } }
)
db.bios.find(
{"name.first": "Yukihiro",
"name.last": "Matsumoto"
})
Pr Y.Lefdaoui NOSQL Slide 50
Requête sur des éléments d'un tableau
db.bios.find( { contribs: "UNIX" } )
db.bios.find(
{ "awards.award": "Turing Award" }
)
db.bios.find(
{ awards: { $elemMatch: { award: "Turing Award", year: { $gt: 1980 } } } }
)
// contient à la fois les éléments "red" et "blank", sans tenir compte de l'ordre ou des //
autres éléments du tableau.
db.inventory.find( { tags: { $all: ["red", "blank"] } } )
// contient au moins un élément qui est supérieur à ($ gt) 22 et inférieur à ($ lt) 30:
db.inventory.find( { dim_cm: { $elemMatch: { $gt: 22, $lt: 30 } } } )
// contient au moins un élément qui est supérieur à ($ gt) 22 et inférieur à ($ lt) 30:
db.inventory.find( { dim_cm: { $elemMatch: { $gt: 22, $lt: 30 } } } )
// les documents dont l'état est égal à "A", regroupe les documents correspondants dans
// le champ cust_id, calcule le total de chaque champ cust_id à partir de la somme du
//champ du montant et trie les résultats en fonction du champ total par ordre
//décroissant:
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])
// les documents dont l'état est égal à "A", regroupe les documents correspondants dans
// le champ cust_id, calcule le total de chaque champ cust_id à partir de la somme du
//champ du montant et trie les résultats en fonction du champ total par ordre
//décroissant:
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])