【问题标题】:How to find nearest frineds MongoDb如何找到最近的朋友 MongoDb
【发布时间】:2013-06-25 06:48:25
【问题描述】:
我有 3 个 MongoDb 集合:
- 轨道(纬度、经度、created_at [日期时间]、用户 ID);
- 用户 (user_id, ...);
- users_contacts (user_id, user_contact_id, ...)。
我有一个 user_id。
需要找到他的联系人(users_contacts)的最新位置,按距离他当前位置的距离排序(最近的将在结果的顶部)。
如何创建 MapReduce 函数?感谢任何可以提供 C# 示例的人。
【问题讨论】:
标签:
c#
mongodb
geospatial
geo
【解决方案1】:
你需要看看 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)