sql >> Databasteknik >  >> NoSQL >> MongoDB

$skip och $limit i aggregeringsramverket

Eftersom det här är en textsökfråga vi pratar om så är den mest optimala formen denna:

db.collection.aggregate([
    { 
       "$match": {
               "$text": { "$search": "cake tea" }
    }
    },
    { "$sort": { "score": { "$meta": "textScore" } } },
    { "$limit": skip + limit },
    { "$skip": skip }
])

Grunden för minnesreserven från de bästa "sorterings"-resultaten kommer bara att fungera inom sina egna "gränser" som det var och detta kommer inte att vara optimalt för något utöver några rimliga "sidor" med data.

Utöver vad som är rimligt för minneskonsumtion kommer det ytterligare steget troligen att ha en negativ effekt snarare än positivt.

Dessa är verkligen de praktiska begränsningarna för textsökningsmöjligheterna som är tillgängliga för MongoDB i den nuvarande formen. Men för allt som är mer detaljerat och kräver mer prestanda, är det bättre för dig att använda en extern "syftebyggd" textsökningslösning, precis som är fallet med många SQL "fulltext"-lösningar.



  1. Mongoose - validera e-postsyntax

  2. MongoDB $trunc

  3. MongoDB VÄLJ RÄKNINGSGRUPP EFTER

  4. Grundläggande överväganden för att ta en MongoDB-säkerhetskopia