Приведет ли исполнение монго в цикл for к сбою? - PullRequest
1 голос
/ 29 марта 2019

У меня настроен сканер, который сканирует все (уникальные) ссылки на веб-сайте и сохраняет ссылки и их теги body в mongo.В следующий раз, когда я буду сканировать веб-сайт, мне нужно убедиться, что во избежание дублирования попадают только новые ссылки или ссылки с обновленным содержимым тегов тела.

Итак, в основном я заполняю массив недавно просканированных ссылок идля каждого объекта ссылки в массиве я выполняю
db.collection.find ({: link_url => link_url,: body => body})

Будет ли выполняться вышеуказанный запрос поиска в a дляпетля вызывает какие-либо препятствия или сбои?Допустим, в худшем случае длина массива может быть 5000.

Я пытался получить всю коллекцию в одном запросе, но этот подход требует глубокого сопоставления хэша и представляет собой операцию n ^ 2.Или требуется несколько операций реструктуризации хеша, чтобы сделать его пригодным для сравнения.

for(i<5000)
  temp = db.collection.find(i) 
end


Это основная логика, которую я реализую.Это хорошо с mongodb / mongoid / rails?

1 Ответ

0 голосов
/ 01 апреля 2019

MongoDB не будет аварийно завершать работу при большом количестве запросов, однако ваш сканер может работать медленно.Вы можете использовать оператор $ in для сопоставления нескольких значений в одном запросе или оператор $ или для более сложных условий, а также убедиться, что выполняемые запросы используют индексы.

...