Introduction à MongoDB

Le pipeline

Le pipeline est un framework qui permet - comme son nom l'indique - d'enchaîner des actions pour transformer et traiter les résultats de requêtes spécifiques.

La commande utilisée est : db.collection.aggregate(pipeline, options)

Parmi les options possibles :

  • explain : obtenir des méta-informations sur la requête ;
  • allowDiskUse : permettre l'utilisation d'un cache sur disque ;
  • cursor : définir la taille du lot pour le curseur.

Exemple :

> db.movies.aggregate([
    {$match: { genre: "Action" }},
    {$project: { year: 1, countActors: { $size: "$actors" } , _id: 0 }},
    {$sort: { countActors: -1 }}
])

Exemple en utilisant match et group :

> db.orders.aggregate([
    {$match: { status: "A" }},
    {$group: {
        _id: "$cust_id",
        total: { $sum: "$amount" }
    }}
])

Exemple en utilisant project et sort :

> db.users.aggregate([
    {$project: { name: { $toUpper: "$_id" } , _id: 0 }},
    {$sort: { name: 1 }}
])

Autre exemple :

> db.users.aggregate([
    { $unwind : "$likes" },
    { $group : { _id : "$likes" , number : { $sum : 1 } } },
    { $sort : { number : -1 } },
    { $limit : 5 }
])