如何找到最近的朋友MongoDb

时间:2013-06-27 16:41:48

标签: c# mongodb geospatial geo

我有3个 MongoDb 集合:

  • track(lat,lon,created_at [datetime],user_id);
  • users(user_id,...);
  • users_contacts(user_id,user_contact_id,...)。

我有一个user_id。 需要找到他的联系人(users_contacts)的最新位置,由他们当前位置的distanse排序(最近将在结果的顶部)。 如何创建 MapReduce 功能?感谢能够提供 C#示例 的任何人。

1 个答案:

答案 0 :(得分:0)

您需要查看Near / geoNear功能

http://docs.mongodb.org/manual/reference/operator/near/

类似

places.EnsureIndex(IndexKeys.GeoSpatial("loc"), IndexOptions.SetGeoSpatialRange(-500, 500));
var query = Query.Near("loc", 50, 50, 5);
var cursor = places.Find(query).SetLimit(20);
foreach (var hit in cursor) {
    // process hit
}

现在您要查询users_contacts

  var query =  Query.And(Query.EQ("user_id", "<id>"),Query.Near("loc", x, y, r));
    var cursor = users_contacts.Find(query)