簡體   English   中英

查找操作緩慢

[英]Lookup Operation Slow

我有以下查詢:

query = [{
    $match: {
      $and: [{
        feed: {
          $in: feeds
        }
      }, {
        updatedAt: {
          $gte: new Date(date)
        }
      }
    ]
    }
  },
  {
    $lookup: {
      from: "feed",
      localField: "feed",
      foreignField: "_id",
      as: "feed"
    }
  },
  {
    $unwind: {
      path: "$feed",
      preserveNullAndEmptyArrays: true
    }
  },
  {
    $lookup: {
      from: "source",
      localField: "feed.source",
      foreignField: "_id",
      as: "feed.source",
    }
  },
  {
    $sort: {
      updatedAt: -1
    }
  },
  {
    $limit: limit
  },
  {
    $skip: skip
  }
];

該查詢花費的時間太長,大約需要10秒。

我讀了https://docs.mongodb.com/manual/core/aggregation-pipeline-optimization/,但速度仍然很慢。

我正在尋找盡可能優化的方法,有沒有辦法? 該集合的索引為$ updatedAt:-1

有任何想法嗎?

如果要快速運行,建議您刪除$lookup管道階段,並根據其用法對文檔建模。

但是,您可以在聚合查詢的第一個匹配部分(updatedAt,提要)上添加索引。 但是您仍然會遇到一個問題,即您仍在從另外兩個不使用任何索引的集合中查找。

當$ match和$ sort管道運算符出現在管道的開頭時,它們可以利用索引。

https://docs.mongodb.com/master/core/aggregation-pipeline/#pipeline-operators-and-indexes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM