MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

$skip und $limit im Aggregationsframework

Da dies eine Textsuchabfrage ist, über die wir sprechen, ist die optimalste Form diese:

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

Das Grundprinzip der Speicherreserve aus den oberen "Sortierungs"-Ergebnissen funktioniert sozusagen nur innerhalb seiner eigenen "Grenzen", und dies ist nicht optimal für etwas anderes als ein paar vernünftige "Seiten" von Daten.

Jenseits dessen, was für den Speicherverbrauch angemessen ist, wird sich die zusätzliche Stufe wahrscheinlich eher negativ als positiv auswirken.

Dies sind wirklich die praktischen Einschränkungen der Textsuchfunktionen, die MongoDB in der aktuellen Form zur Verfügung stehen. Aber für alles, was detaillierter ist und mehr Leistung erfordert, dann sind Sie, genau wie bei vielen SQL-„Volltext“-Lösungen, besser dran, eine externe „spezielle“ Textsuchlösung zu verwenden.