Sommaire classique, explications “comment / ou / pourquoi” et exemples TD/TP, puis Correcteur integre.
comment db.collection.find(query, projection?)
— filtrer; paginer avec .sort().limit().skip()
.
pourquoi lire sans calcul.
// Manhattan avec une note < 10, ne retourner que name + grades.score
db.restaurants.find(
{ "borough": "Manhattan", "grades.score": { "$lt": 10 } },
{ "name": 1, "grades.score": 1, "_id": 0 }
)
{ "name": 1, "address.zipcode": 1, "_id": 0 }
// Comparaison, logique, tableaux
{ "grades.score": { "$gt": 50 } }
{ "$or": [ { "address.street": "Union Street" }, { "address.street": "Union Square" } ] }
{ "grades": { "$elemMatch": { "grade": "A", "score": { "$lt": 10 } } } }
db.restaurants.distinct("cuisine")
db.restaurants.countDocuments({ "cuisine": "French" })
db.restaurants.find({}).sort({ "name": 1 })
db.restaurants.find({}).limit(10)
db.restaurants.find({}).skip(20).limit(10)
db.coll.insertOne({ "a": 1 })
db.restaurants.updateOne(
{ "restaurant_id": "30075445" },
{ "$set": { "address.zipcode": "10463" } }
)
db.restaurants.updateMany(
{ "grades.grade": { "$not": { "$eq": "C" } } },
{ "$set": { "comment": "Ok" } }
)
db.restaurants.deleteMany({ "borough": "Bronx", "cuisine": "Bakery" })
db.restaurants.aggregate([
{ "$match": { "borough": "Bronx" } },
{ "$group": { "_id": "$cuisine", "total": { "$sum": 1 } } },
{ "$sort": { "total": -1 } },
{ "$limit": 5 }
])
comment meme syntaxe que find • ou debut de pipeline • pourquoi reduire le volume
{ "$match": { "borough": "Bronx" } }
comment 1 element de tableau = 1 doc • ou avant $group sur un tableau
{ "$unwind": "$grades" }
comment selection/renommage/calcul • pourquoi faconner l entree du group/sort
{ "$project": { "name": 1, "date": "$grades.date", "grade": "$grades.grade" } }
comment _id + accumulateurs • pourquoi stats par categorie
{ "$group": { "_id": "$cuisine", "total": { "$sum": 1 } } }
{ "$sort": { "total": -1 } }
{ "$limit": 5 }
{ "$count": "n" }
{ "$sum": 1 }
{ "$avg": "$grades.score" }
{ "$addToSet": "$restaurant_id" }
{ "$push": "$grades.grade" }
{ "$year": "$grades.date" }
{ "$divide": ["$Population", 1000000] }
{ "$size": "$restos" }