MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

mongoDB - Durchschnitt von Array-Werten

Die Positionsnotation in der Aggregation scheint immer noch nicht unterstützt zu werden, sehen Sie sich dieses Ticket an .

Wie @Sammaye sagt, müssen Sie entweder zuerst das Array entladen oder Ihr Koordinaten-Array durch ein eingebettetes lng ersetzen /lat eingebettetes Dokument, was dies trivial machen würde.

Angesichts der Array-Struktur könnten Sie die Lat/Lng wie folgt abwickeln und projizieren:

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"}
 }}
]);