Упомянутый ответ использует MongoDB агрегатную функцию .
Вы можете сделать это с помощью golang, как показано ниже:
stages := mongo.Pipeline{}
getNearbyStage := bson.D{{"$geoNear", bson.M{
"near": bson.M{
"type": "Point",
"coordinates": []float64{latitude, longitude},
},
"maxDistance": rangeInMeters,
"spherical": true,
"distanceField": "distance",
}}}
stages = append(stages, getNearbyStage)
filterCursor, err := collection.Aggregate(ctx, stages)
if err != nil {
log.Println(err)
return nil, err
}
Если если вы хотите добавить еще один запрос к конвейеру, вы можете просто создать еще один этап и добавить его в срез этапов
также ознакомьтесь с этим кратким руководством по использованию конвейеров агрегации в golang и mon go Golang и MongoDB - конвейер агрегирования данных