我将以下文档结构存储在集合中:
{
"name": "Empire State Building",
"location": {
"city": "New York",
"lat": 54.665434,
"lng": 3.34434
}
}
该系列包含世界各地不同城市的各种地标的坐标。
我希望能够做的是根据集合中的记录获取所有城市的平均lat
和lng
。
到目前为止,我没有太多运气,我可以使用以下查询提取不同的城市名称:
db.pubs.distinct("Location.City").sort()
但是我不知道从哪里开始获取所有匹配值的lat和lng属性的平均值。
如果它有所不同我使用的是mongo shell
。
答案 0 :(得分:1)
$avg
运营商是您的朋友。 $avg documentation
db.pubs.aggregate([
{
$group: {
_id: "$location.city",
avgLat: {$avg : "$location.lat"},
avgLng: {$avg : "$location.lng" }
}}])
答案 1 :(得分:0)
我认为你应该尝试mongo聚合。以下聚合可能适用于您的情况
db.collectionName.aggregate({
"$match": {
"location.city": "New York"
}
},
{
"$group": {
"_id": 0,
"LatAvg": {
"$avg": "$location.lat"
},
"LongAvg": {
"$avg": "$location.lng"
}
}
})