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

$spring og $limit i aggregeringsramme

Da dette er en tekstsøgning, vi taler om, er den mest optimale form denne:

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

Begrundelsen for hukommelsesreserven fra de øverste "sorterings" resultater vil kun fungere inden for sine egne "grænser", som det var, og dette vil ikke være optimalt for noget ud over et par rimelige "sider" med data.

Ud over, hvad der er rimeligt for hukommelsesforbrug, vil den ekstra fase sandsynligvis have en negativ effekt frem for positiv.

Dette er virkelig de praktiske begrænsninger af tekstsøgningsfunktionerne, der er tilgængelige for MongoDB i den nuværende form. Men for alt, der er mere detaljeret og kræver mere ydeevne, så er du, ligesom det er tilfældet med mange SQL "fuldtekst"-løsninger, bedre stillet ved at bruge en ekstern "formålsbygget" tekstsøgningsløsning.



  1. indsætMange Håndter Duplikatfejl

  2. Redis sub/pub og php/nodejs

  3. Voksende betydning af MongoDB inden for datavidenskab

  4. Kan ikke oprette forbindelse til MongoDB via node.js i Docker