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

Мързеливо зареждане/превъртане на повече данни в Mongoose/Nodejs

Общата концепция за "странициране" е да се използва .skip() което по същество „прескача“ резултатите, които вече са били извлечени, така че по същество можете да направите това:

var q = Post.find().sort( "rating" ).skip(10).limit(10);

Но наистина, както можете да си представите, това ще се забави значително, когато получите няколко „страници“. Така че наистина искате нещо по-умно. По същество това е „заявка за диапазон“, при която искате да вземете по-високи (или по-ниски, ако са низходящи) резултати от последния набор от извлечени резултати. Дадена е последната стойност от 5 тогава за повече, отколкото бихте направили:

var q = Post.find({ "rating": { "$gt": 5 } }).sort( "rating" ).limit(10);

Изглежда добре, но наистина все още има проблем. Ами ако следващата "страница" също съдържа резултати с рейтинг 5? Тази заявка ще ги пропусне и никога няма да ги покаже.

Най-умното нещо, което трябва да направите, е да "запазите" целия _id стойности от документа, тъй като те са уникални ключове. По принцип прилагайте същото нещо, само че този път се уверете, че не включвате резултатите от предишната страница в новата. $nin операторът помага тук:

var q = Post.find({ "rating": { "$gte": 5 }, "_id": { "$nin": seenIds } })
    .sort( "rating" ).limit(10);

Дали seenIds е само последната страница с резултати или някои повече зависи от "плътността" на стойността, по която сортирате, и разбира се трябва да ги "съхраните" в променлива на сесията или нещо подобно.

Но опитайте да адаптирате това, тъй като заявките за обхват обикновено са най-добрият ви резултат за ефективност.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Дизайн на таблица MongoDB и производителност на заявки

  2. MongoDB индексиране за приложение на Parse Server

  3. Мангуста, сортирайте заявката по попълнено поле

  4. Как да вложите същата схема в mongoose js

  5. Проектирайте като вложен документ в spring mongo