Увеличьте скорость поиска $ в большой коллекции наборов данных - PullRequest
0 голосов
/ 29 марта 2019

У меня есть коллекция продуктов, в которой я хотел бы реализовать search, используя title и author, и на основании этого я хотел бы отфильтровать свои результаты. Так как мой набор данных довольно большой, около 1 млн., Поэтому я создал индекс для title и author, и он отлично работает, результаты выбираются менее 20 мс.

Но я хочу получить некоторые дополнительные данные, используя $lookup из другой коллекции под названием vendor_products, нет, поскольку vendor_products также содержит около 1 миллиона записей, $lookup занимает много времени, и мой запрос заканчивается ups, принимающих 1000 мс.

Так есть ли способ оптимизировать его.

Коллекция ПРОДУКТОВ («около миллиона записей») Я создал индекс для автора и заголовка

{
'_id'=>'ObjectId('...')',
'title'=>'Harry Potter',
'author'=>'J.K Rowling',
'vendor_product_id'=>'ObjectId('...')'
'other_data'...
}

ПРОДАЖА ПРОДУКЦИИ

{
  '_id'=>'ObjectId('...')',
  'product_id'=>'ObjectId('...')',
  'data'=>['data i need to fetch']
}

[
       '$match'=>['$text'=> ['$search'=> $search_query ] ] 
],
  [
       '$lookup' => [
       'from' => 'vendor_products',
       'localField' => '_id',
       'foreignField' => 'product_id',
       'as' => 'vendor_products'
  ]
],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...