проблема
У меня есть потенциально большой запрос на поиск, который должен быть остановлен, когда выполняются условия моего сервера «javascript», например, у моего сервера уже есть документы для определения решения.Метеор js курсор hasNext() и next()?
Идея здесь состоит в том, чтобы перебирать курсор из монго, ударяя монго «по требованию», любопытное «потоковое», поэтому ни мой сервер, ни монго не должны получать сразу все результаты.
ожидаемого поведения
- запрос и получить курсор (г = Collection.find())
- проверки на следующем (r.hasNext())
- выборки в следующем (r.next())
- раз мои требования будут выполнены, остановка (удаление г)
пример кода
Collection.find().forEach(function(doc) {
doc = do_my_business(doc);
if (doc.found) {
// hey mister cursor, go home and die! don't touch my mongo anymore!
return false;
}
});
реальная проблема
я создал еще один вопрос, который на самом деле, как я в конечном итоге здесь: https://stackoverflow.com/questions/30836586/mongodb-find-near-until-maxdistance-or-at-least-x-records
Короткий ответ: нет. Длинный ответ: возможно, вы могли бы выполнить этот другой способ, например, с помощью запроса 'where' или агрегации. Это зависит от бизнес-логики. –
Я пытаюсь найти решение «mongo way», но пока не так много удачи. Я также открыл для этого вопрос: http://stackoverflow.com/questions/30836586/mongodb-find-near-until-maxdistance-or-at-least-x-records – kroe
Кажется, что вы можете просто сделать var count = Collection.find (selectorWithDistance) .count() ', то если' count' недостаточно, попробуйте еще раз с другого расстояния. –