0

3 つの MongoDbコレクションがあります。

  • トラック (緯度、経度、created_at [日時]、user_id);
  • ユーザー (user_id, ...);
  • users_contacts (user_id、user_contact_id、...)。

user_id が 1 つあります。彼の連絡先 (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 に答える