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

Effektiv måde at søge på med MongoDB og ASP.NET MVC

Du kan bruge SetLimit på markøren, der repræsenterer forespørgslen. Det vil begrænse resultaterne fra MongoDB , ikke kun i hukommelsen:

var cursor = collection.FindAll(); // Or any other query.
cursor.SetLimit(50); // Will only return 50.
foreach (var item in cursor)
{
    // Process item.
}

Du kan også bruge SetSkip for at indstille et spring (overraskende):

cursor.SetSkip(10);

Bemærk: Du skal indstille disse egenskaber på markøren før opregne det. Indstilling af disse efter vil ikke have nogen effekt.

Forresten, selvom du kun bruger Linq 's Skip og Take du vil ikke hente tusindvis af dokumenter. MongoDB automatisk batcher resultatet efter størrelse (første batch er ca. 1mb , resten er 4mb hver), så du ville kun få den første batch og tage de første 50 dokumenter ud af den. Mere om

Rediger: Jeg tror, ​​der er en vis forvirring omkring LINQ her:

Skip og Take er udvidelsesmetoder på begge IEnumerable og IQueryable . IEnumerable er beregnet til i hukommelsessamlinger, men IQueryable operationer er oversat af den specifikke udbyder (C#-driveren i dette tilfælde). Så ovenstående kode svarer til:

foreach (var item in collection.AsQueryable().SetLimit(50))
{
    // Process item.
}



  1. Mongoose Forsøger at åbne ulukket forbindelse

  2. MongoDB-forespørgsel for dokument, der er ældre end 30 sekunder

  3. Hvordan får du adgang til attributter for et objekt, der forespørges fra Mongo i Meteor

  4. Har brug for en løsning til opslag af en streng til objectID fremmedfelt