sql >> Databasteknik >  >> NoSQL >> MongoDB

Effektivt sätt att söka med MongoDB och ASP.NET MVC

Du kan använda SetLimit på markören som representerar frågan. Det kommer att begränsa resultaten från MongoDB , inte bara i minnet:

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

Du kan också använda SetSkip för att ställa in ett hoppa över (överraskande):

cursor.SetSkip(10);

Obs! Du måste ställa in dessa egenskaper på markören före räkna upp det. Att ställa in dessa efter kommer inte att ha någon effekt.

Förresten, även om du bara använder Linq s Skip och Take du kommer inte att hämta tusentals dokument. MongoDB batcherar automatiskt resultatet efter storlek (första batchen är ungefär 1mb , resten är 4mb varje) så att du bara skulle få den första batchen och ta de första 50 dokumenten ur den. Mer om

Redigera: Jag tror att det finns en viss förvirring om LINQ här:

Skip och Take är tilläggsmetoder på båda IEnumerable och IQueryable . IEnumerable är avsedd för minnessamlingar, men IQueryable operationer är översatta av den specifika leverantören (C#-drivrutinen i det här fallet). Så ovanstående kod är likvärdig med:

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



  1. MongoDB textsökning och beställ efter

  2. MongoDB får maxdatum i dubbelkapslad array

  3. Node.js MongoDB collection.find().toArray returnerar ingenting

  4. Stor fördröjning när du använder Selleri + Redis