MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mongoDB - moyenne sur les valeurs du tableau

La notation positionnelle dans l'agrégation ne semble toujours pas prise en charge, consultez ce ticket .

Comme le dit @Sammaye, vous devez d'abord soit dérouler le tableau, soit remplacer votre tableau de coordonnées par un lng intégré /lat document intégré, ce qui rendrait cela trivial.

Compte tenu de la structure du tableau, vous pouvez dérouler et projeter la lat/lng comme ceci :

myColl.aggregate([
 // unwind the coordinates into separate docs
 {$unwind: "$myCoordinates"},

 // group back into single docs, projecting the first and last
 // coordinates as lng and lat, respectively
 {$group: {
   _id: "$_id",
   lng: {$first: "$myCoordinates"},
   lat: {$last: "$myCoordinates"}
 }},

 // then group as normal for the averaging
 {$group: {
   _id: 0,
   lngAvg: {$avg: "$lng"},
   latAvg: {$avg: "$lat"}
 }}
]);