如何提高MongoDB操作的性能?

时间:2018-01-25 16:45:23

标签: arrays json node.js mongodb mongoose

因此,在我的应用程序启动时,我需要获取该公司拥有的所有产品的列表。这是仅有约60种产品的列表。

我们需要获取整个列表,无论用户购买了什么,因为未购买的商品需要在“目录”视图中显示。

products集合中的每个文档都有一个hasAccess数组属性,这是一个用户ID数组。

问题是这些hasAccess数组有时会长达数千个项目,因此下面的查询开始需要很长时间(最多1秒):

const userID = req.user.id

Product.find({}, (err, _products) => {
  if (err) {
    res.status(400).json({ error: err })
    return
  }
  res.json(_products)
}

目前,在执行此查询之后,在将数据返回给客户端之前,我在_products中的每个循环中检查,检查每个product.hasAccess是否包含用户的ID,然后执行某些操作

有更高效的方法吗?有没有办法简单地返回一个product.hasAccess.includes(userID)的布尔值,而不是让Mongoose返回整个数组,然后检查自己?

要明确的是,Mongoose操作本身需要很长时间(几百毫秒),而不是我之后的工作。我最初的感觉是,大部分时间都只是解析大量JSON所需的时间。

0 个答案:

没有答案