sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan kan jeg se, om der er flere resultater fra en forespørgsel i MongoDB?

MongoDB har tailable markører , som giver dig mulighed for at genbruge en markør efter alle data er blevet returneret. Det ville se sådan ud:

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()

Bemærk, at der kun er hentet 10 dokumenter, men markøren kan inspiceres for at afgøre, om der er flere tilgængelige objekter. Det eneste problem er, at tailable markører kun kan bruges på begrænsede samlinger.

Ovenstående kan også bruges med en almindelig markør, men du bliver nødt til at forespørge efter n + 1 Dokumenter. Dette er grundlæggende den samme løsning, som du bruger nu. Du skal bruge size() dog, da det tager højde for spring- og limit-modifikatorerne.

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n

Jeg er ikke bekendt med PyMongo, så jeg ved det ikke med sikkerhed, men der er en mulighed for, at denne løsning sender n + 1 komplette dokumenter til din ansøgning i stedet for det påkrævede n , hvilket resulterer i mindre båndbredde overhead. Hvis det er tilfældet, vil du måske oprette en funktion på serversiden, der gør det samme, men kun returnerer et objekt, der indeholder n dokumenter i et array, og et flag, der angiver, om en n + 1 dokument er tilgængeligt.




  1. Meteor upsert tilsvarende

  2. Lagermønster med MongoDB - flere arbejdsenheder med en transaktion

  3. Forebyggende sikkerhed med revisionslogning til MongoDB

  4. Indsæt element i indlejret array i Mongodb