我有 3 个MongoDb集合:
- 轨道(lat,lon,created_at [datetime],user_id);
- 用户(user_id,...);
- users_contacts (user_id, user_contact_id, ...)。
我有一个 user_id。需要找到他的联系人(users_contacts)的最新位置,按距离他当前位置的距离排序(最近的将在结果的顶部)。如何创建MapReduce函数?感谢任何可以提供C# 示例的人。
我有 3 个MongoDb集合:
我有一个 user_id。需要找到他的联系人(users_contacts)的最新位置,按距离他当前位置的距离排序(最近的将在结果的顶部)。如何创建MapReduce函数?感谢任何可以提供C# 示例的人。
您需要查看 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)