sql >> Database >  >> NoSQL >> MongoDB

Hoe paginering uitvoeren met bereikquery's in MongoDB?

Omdat de verzameling die ik aan het paging was dubbele waarden had, moest ik een samengestelde index maken op ProductName en id.

Samengestelde index maken

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

Dit loste mijn probleem op.
Referentie:https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ

Ervan uitgaande dat u deze waarden heeft:

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

Dus je doet dit voor de op bereik gebaseerde paginering (paginagrootte van 2):

1e pagina

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

2e pagina

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

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

3e pagina

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

Hier zijn de documenten voor $min/max:http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers

Als u geen dubbele waarden in uw verzameling heeft, hoeft u min &max niet te gebruiken of een samengestelde index te maken. Je kunt gewoon $lt &$gt gebruiken.



  1. mongodb aggregatie sorteren

  2. Tips voor het uitvoeren van MongoDB in productie met behulp van wijzigingsstromen

  3. 'process.nextTick(function() { throw err; })' - Undefined is geen functie (mongodb/mongoose)

  4. Moet ik de Redis-verbinding tussen bestanden/modules delen?