MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как мога да разбера дали има още резултати от заявка в MongoDB?

MongoDB има покриващи се курсори , които ви позволяват да използвате повторно курсор, след като всички данни бъдат върнати. Ще изглежда по следния начин:

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()

Имайте предвид, че има само 10 извлечени документа, но курсорът може да бъде проверен, за да се определи дали има още налични обекти. Единственият проблем е, че подлежащите на опашка курсори могат да се използват само върху ограничени колекции.

Горното може да се използва и с обикновен курсор, но ще трябва да направите заявка за n + 1 документи. Това е основно същото решение, което използвате сега. Трябва да използвате size() въпреки това, тъй като това взема предвид модификаторите за пропускане и ограничаване.

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n

Не съм запознат с PyMongo, така че не знам това със сигурност, но има възможност това решение да изпраща n + 1 пълните документи към вашата кандидатура, а не необходимите n , което води до незначителни разходи за честотна лента. Ако случаят е такъв, може да искате да създадете функция от страната на сървъра, която прави същото, но връща само обект, съдържащ n документи в масив и флаг, който показва дали n + 1 документът е наличен.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Използване на съвпадение с променливи на входния документ

  2. Хибриден облак срещу пълен публичен облак - плюсове и минуси

  3. Елементът „id“ не съответства на нито едно поле или свойство на грешка с вложени класове

  4. Как да конвертирам низ в ObjectId в роден драйвер на nodejs mongodb?

  5. MongoDB проектира документите с брой над 2