Получите расстояние между двумя геолокациями из MongoDB - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь получить расстояние между двумя точками на 2dsphere из MongoDB, используя Go.

Я следил за этим ответом и пробовал это

conditions["geolocation"] = bson.M{
        "$geoNear": bson.M{
            "near": bson.M{
                "type":        "Point",
                "coordinates": []float64{latitude, longitude},
            },
            "maxDistance":   rangeInMeters,
            "spherical":     true,
            "distanceField": "distance",
        },
    }

filterCursor, err := collection.Find(ctx, conditions)

Но я получаю эту ошибку: «Недопустимый аргумент в запросе geo near: near»

1 Ответ

0 голосов
/ 16 июня 2020

Упомянутый ответ использует 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 - конвейер агрегирования данных

...