2015-06-21 2 views
0

У нас есть коллекция с миллионами записей в mongoDB. его много времени и времени, чтобы подсчитать и создать разбивку на страницы с этими записями. Каков наилучший способ сделать это с помощью nodejs. Я хочу создать страницу, где я вижу записи с разбиением на страницы, подсчет, удаление, поиск записей. Ниже приведен код, который делает запрос к Mongo с различными условиями.Как получить/подсчитать миллионы записей в mongodb с nodejs

crowdResult.find({ "auditId":args.audit_id,"isDeleted":false}) 
      .skip(args.skip) 
      .limit(args.limit) 
      .exec(function (err, data) { 
       if (err) 
        return callback(err,null); 
       console.log(data); 
       return callback(null,data); 
      }) 
+0

Используйте 'limit' и' skip' в запросе http://docs.mongodb.org/manual/reference/method/cursor.skip/ Кстати, это не очень хороший вопрос, вы должны показать нам свой фактический код чтобы дать вам ответ –

+0

Спасибо Michelem. Мы уже используем это. Я обновил вопрос с кодом. –

ответ

0

Если цель состоит в том, чтобы пройти через большой набор данных без тайм-аута затем я использую следующий подход, чтобы получить стр один за другим и обрабатывать перемещаемый ResultSet, как только он становится доступным: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f

Пожалуйста, внимание на следующие строки, чтобы получить быстрый представление о том, что код делает перед погружением глубже:

  1. Пусть getPage() обрабатывать работу, вы можете установить pageSize и query по своему вкусу: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L68
  2. Метод подписи: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L29
  3. Процесс pagedResults как только они станут доступны: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L49
  4. Переход к следующей странице: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L53
  5. код остановится, когда больше не осталось данных: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L41
  6. Или он остановится при работе на последней странице данных: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L46

Надеюсь, это вдохновляет, даже если это не точное решение для ваших нужд.