MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

$skip и $limit в рамката за агрегиране

Тъй като това е заявка за текстово търсене, за която говорим, най-оптималната форма е тази:

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

Обосновката за резерва на паметта от най-горните резултати за „сортиране“ ще работи само в собствените си „граници“ и това няма да е оптимално за нищо извън няколко разумни „страници“ с данни.

Освен това, което е разумно за консумация на памет, допълнителният етап вероятно ще има по-скоро отрицателен ефект, отколкото положителен.

Това наистина са практическите ограничения на възможностите за текстово търсене, достъпни за MongoDB в текущата форма. Но за всичко по-подробно и изискващо по-голяма производителност, точно както е в случая с много решения за „пълен текст“ на SQL, е по-добре да използвате външно „целесъобразно“ решение за търсене на текст.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Случаи на използване за updateOne над findOneAndUpdate в MongoDB

  2. MongoDB $eq оператор на конвейера за агрегиране

  3. spring data mongodb група от

  4. Как да използвате GridFS за съхраняване на изображения с помощта на Node.js и Mongoose

  5. Spring Boot и как да конфигурирам подробности за връзката с MongoDB?