Как написать запрос $centerSphere с помощью mgo

Я прочитал документацию здесь рассказывает о написании запрос, чтобы получить некоторое местоположение в пределах радиуса:

db.restaurants.find({ location:
   { $geoWithin:
      { $centerSphere: [ [ -73.93414657, 40.82302903 ], 5 / 3963.2 ] } } })

Теперь я пытаюсь написать это с помощью драйвера mgo, но я не понимаю, как написать это здесь, что я пробовал:

var cites []City

collection := mongo.DB("Db").C("Collection")

err = collection.Find(bson.M{
    "location": bson.M{
        "$geoWithin": bson.M{
            "$centerSphere" : [ [ -73.93414657, 40.82302903 ], 5 / 3963.2 ],
        },
    },
}).All(&cites)

Да, приведенный выше код абсолютно не работает, потому что я не знаю, как перевести это [ [ -73.93414657, 40.82302903 ], 5 / 3963.2 ] в go?


person Gujarat Santana    schedule 27.04.2017    source источник


Ответы (1)


Для $centerSphere необходимо пройти центральную точку и радиус в срезе типа []interface{}, где точка также является срезом, содержащим свои координаты, также может быть типа []interface{}.

err = collection.Find(bson.M{
    "location": bson.M{
        "$geoWithin": bson.M{
            "$centerSphere": []interface{}{
                []interface{}{-73.93414657, 40.82302903}, 5 / 3963.2,
            },
        },
    },
}).All(&cites)

См. связанный/возможный дублирующий вопрос:

$буквальное использование в Golang-mgo

person icza    schedule 27.04.2017