dqch34769 2017-04-27 13:43
浏览 118
已采纳

如何使用mgo编写查询$ centerSphere

I have read the documentation here talks about writing query to get some location within the radius:

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

Now I try to write it using mgo driver but I don't get the idea how to write it here what I have tried :

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)

Yes above code absolutely not working becuase I don't know how to translate this [ [ -73.93414657, 40.82302903 ], 5 / 3963.2 ] in go?

  • 写回答

1条回答 默认 最新

  • dongtuwu8548 2017-04-27 13:57
    关注

    For $centerSphere you have to pass a center point and a radius in a slice of type []interface{}, where the point is also a slice containing its coordinates, can also be of type []interface{}.

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

    See a related / possible duplicate question:

    $literal usage in Golang-mgo

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?