MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zrobić stronicowanie za pomocą zapytań zakresowych w MongoDB?

Ponieważ kolekcja, którą przeglądałem, miała zduplikowane wartości, musiałem utworzyć indeks złożony na ProductName i id.

Utwórz indeks złożony

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

To rozwiązało mój problem.
Odniesienie:https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ

Zakładając, że masz te wartości:

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

Robisz to dla paginacji opartej na zakresie (rozmiar strony 2):

Pierwsza strona

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

Druga strona

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

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

Trzecia strona

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

Oto dokumentacja dla $min/max:http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers

Jeśli nie masz zduplikowanych wartości w swojej kolekcji, nie musisz używać wartości min i max ani tworzyć indeksu złożonego. Możesz po prostu użyć $lt i $gt.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak ograniczyć liczbę aktualizacji dokumentów w mongodb

  2. Mongoose, znajdź, zwróć określone właściwości

  3. Jak wyeksportować kolekcję do CSV w MongoDB?

  4. Dlaczego Mongoose ma zarówno schematy, jak i modele?

  5. Składnia Java z MongoDB