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

Как да направя пагинация с помощта на заявки за диапазон в MongoDB?

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

Създаване на сложен индекс

db.ProductGuideItem.ensureIndex({ ProductName:1, _id:1});

Това реши проблема ми.
Справка:https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ

Ако приемем, че имате следните стойности:

{a:1, b:1}
{a:2, b:1}
{a:2, b:2}
{a:2, b:3}
{a:3, b:1}

Така че правите това за пагинация, базирана на диапазона (размер на страницата от 2):

1-ва страница

find().sort({a:1, b:1}).limit(2)
{a:1, b:1}
{a:2, b:1}

2-ра страница

find().min({a:2, b:1}).sort({a:1, b:1}).skip(1).limit(2)

{a:2, b:2}
{a:2, b:3}

3-та страница

find().min({a:2, b:3}).sort({a:1, b:1}).skip(1).limit(2)
{a:3, b:1}

Ето документите за $min/max:http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers

Ако нямате дублиращи се стойности в колекцията си, не е необходимо да използвате min &max или да създавате комбиниран индекс. Можете просто да използвате $lt &$gt.



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

  2. Намерете и пребройте елементи от колекция с Mongoose

  3. ГРЕШКА:Не мога да запиша pid файл в /var/run/mongodb/mongod.pid:Няма такъв файл или директория inf fedora 20

  4. Влияние върху производителността при Meltdown върху MongoDB:AWS, Azure и DigitalOcean

  5. Преименувайте поле в резултатите от заявката в MongoDB