воспринимайте это больше как вопрос на стороне клиента: используйте подписки, основанные на текущей группе - если возможно, закодируйте группу в гео-квадрат (более эффективный, чем круг, я думаю?) - периодически (t) выполняет операцию, котораяпроверяет местоположение каждого пользователя и просто отправляет его с идентификатором группы, чтобы соответствовать подпискам
на самом деле ... для создания групп подписок, просто используйте команду geonear для всех ваших подписчиков - создайте хэшваши подписчики и их группы - каждый подписчик подписан на одну группу, а сами (для целевого общения => указывают, что конкретный подписчик должен изменить свою подписку) - итерируют результаты i число раз, где i - количество людей в обновленииgroup - выполнить действие, которое проверяет текущее значение j, номер группы для конкретного подписчика, по отношению к новому значению j - если есть изменение, уведомить абонента о частном канале подписчика - синхронно отправлять уведомлениянастройки Llow подписчика
что-то вроде:
var pageSize;
// assign pageSize in method call
var documents = collection.Find(query);
var max = documents.Size();
for (int i = 0; i == max ; i++)
{
var level = i*pageSize;
if (max / level > 1)
{
documents.Skip(pageSize);
}
else
{
documents.Skip(pageSize).Limit(level);
break;
}
}
:)