在大型数据集上提高$ lookup的速度

时间:2019-03-29 07:23:24

标签: mongodb mongoose mongodb-php

我有一个产品集合,我想使用searchtitleauthor上实现产品,并以此为依据,对结果进行过滤。因此,由于我的数据集非常大,大约有100万个,因此我为titleauthor创建了一个索引,并且效果很好,因此可以在20毫秒内获取结果。

但是我想使用$lookup从另一个名为vendor_products的集合中获取一些其他数据,因为vendor_products也有大约100万个条目,$lookup占用了一个很多时间,我的查询最终花费了1000毫秒。

那么有什么方法可以对其进行优化。

PRODUCTS集合(“大约有100万个条目”) 我已经为作者和标题创建了索引

{
'_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'
  ]
],

0 个答案:

没有答案