sql >> Databáze >  >> NoSQL >> MongoDB

Jak provést stránkování pomocí dotazů na rozsah v MongoDB?

Protože kolekce, kterou jsem stránkoval, měla duplicitní hodnoty, musel jsem vytvořit složený index na ProductName a id.

Vytvořit složený index

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

Toto vyřešilo můj problém.
Odkaz:https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ

Za předpokladu, že máte tyto hodnoty:

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

Takže to uděláte pro stránkování založené na rozsahu (velikost stránky 2):

1. stránka

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

2. stránka

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

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

3. stránka

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

Zde jsou dokumenty pro $min/max:http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers

Pokud ve sbírce nemáte duplicitní hodnoty, nemusíte používat min a max ani vytvářet složený index. Můžete použít pouze $lt &$gt.



  1. Automatické zapojení Spring Boot redisTemplate se nezdařilo

  2. MongoDB extrahování hodnot z BasicDBObject (Java)

  3. Slovník Pythonu:odstranění u' znaků

  4. Použití jedis, jak zapisovat do konkrétního slotu/uzlu v clusteru redis