0

我有 3 个MongoDb集合:

  • 轨道(lat,lon,created_at [datetime],user_id);
  • 用户(user_id,...);
  • users_contacts (user_id, user_contact_id, ...)。

我有一个 user_id。需要找到他的联系人(users_contacts)的最新位置,按距离他当前位置的距离排序(最近的将在结果的顶部)。如何创建MapReduce函数?感谢任何可以提供C# 示例的人。

4

1 回答 1

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)
于 2013-06-27T16:48:42.233 回答