如何找到最近的frineds MongoDb

本文关键字:frineds MongoDb 最近 何找 | 更新日期: 2023-09-27 18:20:06

我有3个MongoDb集合:

  • tracks(lat,lon,created_at[datetime],user_id)
  • users(user_id,…)
  • users_contacts(user_id、user_contact_id…)

我有一个user_id。需要查找联系人的最新位置(users_contacts),按距离当前位置的远近排序(最近的将位于结果的顶部)。如何创建MapReduce函数?感谢任何能够提供C#样本的人。

如何找到最近的frineds MongoDb

您需要了解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)