sql >> Database >  >> NoSQL >> MongoDB

$skip en $limit in aggregatieframework

Aangezien dit een tekstzoekopdracht is waar we het over hebben, is de meest optimale vorm deze:

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

De grondgedachte van de geheugenreserve van de bovenste "sorteer"-resultaten werkt als het ware alleen binnen zijn eigen "limieten" en dit zal niet optimaal zijn voor iets anders dan een paar redelijke "pagina's" met gegevens.

Afgezien van wat redelijk is voor geheugengebruik, zal de extra fase waarschijnlijk eerder een negatief dan een positief effect hebben.

Dit zijn echt de praktische beperkingen van de tekstzoekmogelijkheden die MongoDB in de huidige vorm ter beschikking staan. Maar voor alles wat gedetailleerder is en meer prestaties vereist, kunt u, net als bij veel SQL-oplossingen met "volledige tekst", beter een externe "op maat gemaakte" tekstzoekoplossing gebruiken.



  1. Direct verbinding maken met Redis met (client side) javascript?

  2. Hoe kan ik meerdere verzamelingen in één verzameling combineren met $lookup mongodb of nodejs mongodb?

  3. Concurrerende consument op Redis Pub/Sub ondersteund?

  4. Hoe kan ik een index maken met pymongo