2013-06-27 3 views
0

У меня есть 3 MongoDb коллекции:Как найти ближайший frineds MongoDB

  • треки (широта, долгота, created_at [дата-время], user_id);
  • пользователей (user_id, ...);
  • users_contacts (user_id, user_contact_id, ...).

У меня есть один user_id. Необходимо найти последние местоположения своих контактов (users_contacts), заказанные отделом от его текущего местоположения (ближайшее будет в верхней части результатов). Как создать MapReduce функции? Спасибо всем, кто может предоставить C# образец.

+0

Вы должен зафиксировать название этого сообщения, чтобы помочь другим, кто ищет –

ответ

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)