Bonjour,

J'ai un document contenant un tableau de documents et pour chacun je souhaiterai, par une aggrégation (plus précisement dans une vue), ajouter un champs avec une valeur calculée.

Mon document principal contient un ensemble de commandeLigne, chacun contient un champs quantite ainsi qu'un object Produit contenant lui même un prixCoutant.
J'aimerais ajouter à chaque commandeLigne un champs "montantCoutant" qui serait égal au prixCoutant du produit multiplié par la quantité.

Actuellement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
{
  _id: "123",
  commandeLignes: [
    _id: "456",
    produit: {
      _id: "789",
      prixCoutant: 4.56
    },
    quantite: 5
  ]
}
Et ce que je cherche à avoir :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
{
  _id: "123",
  commandeLignes: [
    _id: "456",
    produit: {
      _id: "789",
      prixCoutant: 4.56
    },
    quantite: 5,
    montantCoutant: 22.8
  ]
}
J'ai essayé avec ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  'commandeLignes.montantCoutant': {
    $map: {
      input: '$commandeLignes',
      as: 'commandeLigne',
      'in': {
        $multiply: [
          '$$commandeLigne.quantite',
          '$$commandeLigne.produit.prixCoutant'
        ]
      }
    }
  }
}
Mais je suis ensuite obligé d'unwind commandeLignes et mon commandeLignes devient un object plutôt qu'un array (je n'ai pas encore bien compris unwind).

Voilà si un spécialiste de MongoDB pouvait m'aider sur le sujet, je lui en serai reconnaissant.