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

Mongo med java - find forespørgsel med batchstørrelse

DBCursor giver dig mulighed for at gentage det sæt af dokumenter, der anses for at være relevante for forespørgslen for at overføres til find() metode. Den henter dovent disse dokumenter fra den underliggende database i bidder af batchSize .

Så med standard batchstørrelsen (101, IIRC) vil den returnere de første 101 dokumenter til din klient, og efterhånden som din klientkode gentager sig ud over det 101. dokument, vil den (bag kulisserne) få fat i de næste 101 dokumenter og så videre indtil alt efter hvad af følgende sker først:

  • Alle de dokumenter, der er relevante for din forespørgsel, returneres, dvs. markøren er opbrugt
  • Din klient holder op med at iterere

Det samme gælder, når du angiver en eksplicit batchSize så i dit tilfælde, når du indstiller batchSize=500 , find() opkald returnerer en DBCursor som indeholder (højst) 500 dokumenter, og hvis der var mere end 500 dokumenter, der matchede din forespørgsel, så ville MongoDB Java-driveren (bag kulisserne) hente den næste batch, mens du gentager ud over det 500. dokument.

Du sagde ...

... hvis du kun får 500 dokumenter, stoppede du enten med at iterere efter 500 eller kun 500 dokumenter blev anset for at være relevante for din forespørgsel .

Du kan se, hvor mange dokumenter der er relevante for din forespørgsel ved at bruge count() metode. For eksempel:

int count = collection.find(query).count();

Du kan også få fat i alle de dokumenter, der er relevante for din forespørgsel på én gang uden at bruge en DBCursor sådan her ...

List<DBObject> obj = collection.find(query).toArray();

... selvom dette selvfølgelig kan have konsekvenser for din ansøgnings heap, da det ville resultere i, at hvert dokument, der opfylder dine kriterier, bliver gemt on-heap i din klient (i stedet for den mere hukommelsesvenlige tilgang med at læse dem i batches via DBCursor ).



  1. MongoDB-database slettet automatisk

  2. Hvordan kalder man funktion efter afslutning af asynkrone funktioner inde i loop?

  3. MongoDB - Fuldtekstindeks - Fuldtekstsøgning - stemming

  4. Mongodb node.js $out med aggregering, der kun virker, hvis der kaldes toArray()