【问题标题】:Mongodb find() takes 1 secondMongodb find() 需要 1 秒
【发布时间】:2019-03-11 13:43:00
【问题描述】:

我的 mongodb 数据库中有一个名为“restaurants”的集合。

这个集合只有一个文档

问题是当我使用猫鼬通过Model.find({restaurantUid}) 获取它时,大约需要1 second 来获取它。

这个餐厅文档中有大约 140 种产品(食物),我有一个数组 n x n 的这些产品,一张表,以跟踪哪种食物选择了哪种食物。文档大小约为 3Mb。

您能建议我一种减少提取时间的方法吗?

我真的不认为问题出在索引上,因为我的收藏中只有一个文档。

提前致谢。

【问题讨论】:

    标签: arrays node.js mongodb mongoose


    【解决方案1】:

    如果您将 Mongoose 用于您的应用程序,您的代码可以如下所示以获得更快的性能...

    Model.findById(_id)
         .lean()
         .exec(function (err, doc) {
         //handle error and results
    });
    
    1. Model.findById(_id) 而不是Model.find()。因为,_id 在发送命令之前是根据 Schema 进行转换的。 参考:mongoosejs doc for findById()

    2. Query.prototype.lean() 返回纯 javascript 对象并为只读场景提供高性能。 参考:mongoosejs doc for lean()

    也关注这些讨论:https://groups.google.com/forum/#!topic/mongoose-orm/u2_DzDydcnA/discussion

    【讨论】:

      【解决方案2】:

      据我所知,没有办法让获取速度更快,我的意思是你可以使用一些云数据库服务,如“MongoDB Altas”,并购买一个好的计划,这样你就可以获得更好的服务器连接并希望为了最好的?。

      我猜你的 mongo 数据库在你的 PC 上本地运行,我认为你不能加快这个过程。

      我不确定你的问题到底是什么,你有这个对数据库的 get 请求作为异步函数吗?所以你可以给服务器时间来加载所有产品,然后打印表格。

      【讨论】:

      • 数据库正在远程服务器上运行。问题是当我的用户应用程序尝试获取这些产品时,他们等待的时间太长了。
      猜你喜欢
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 2021-12-09
      • 2012-11-13
      • 1970-01-01
      • 2012-12-12
      相关资源
      最近更新 更多