改善猫鼬的性能

时间:2019-02-05 07:29:07

标签: mongodb mongoose mongoose-schema mongoose-populate

考虑以下文档

{ 
  lists: {
    list1: [ ObjectId(1), ObjectId(2) ],
    list2: [ ObjectId(1), ObjectId(3) ],
    list3: [ ObjectId(4), ObjectId(5), ObjectId(1)]
  }
}

它包含对另一个集合的引用数组,例如Products当我返回API的响应时,我想要所有这些产品的名称。所以我用填充

Something.populate({ path:'lists', select: 'name')

这工作正常,它使用产品名称填充列表数组。但是我可以看到在猫鼬调试模式下,每个查询都是分别执行的。

Product.find({ _id: { $in:[ 1, 2 ]})
Product.find({ _id: { $in:[ 1, 3 ]}) 
Product.find({ _id: { $in:[ 4, 5, 1 ]}) 

这些列表中可以包含大量具有相同ID的元素,这意味着猫鼬在内部多次查询相同的ID。

我也在使用cachegoose,但是由于这些是填充查询,因此缓存值在这些查询中没有任何作用。任何改善此性能的建议。

0 个答案:

没有答案