首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >猫鼬的查询非常慢(即使是瘦的)

猫鼬的查询非常慢(即使是瘦的)
EN

Stack Overflow用户
提问于 2020-05-27 08:41:36
回答 1查看 1.5K关注 0票数 0

我正在使用MongoDB,并在Express中使用Mongoose处理任何修改。我认为查询应该要快得多。如果我错了,请纠正我,但尽管这些数据很大,但并不是很大。特别是因为在查询期间我没有过滤或任何东西。

所以我用的模型是:

代码语言:javascript
复制
const DataSchema = mongoose.Schema({
  title: String,
  text: String,
  text_transform: Array,
  provider: String,
  url: {
    type: String,
    unique: true,
  },
  word_count: Array,
  HOW: Array,
  date: Date,
  click_count: Number,
}); 

以下是几个基本真理:

文本大小可以不同。可以是150个字符,也可以是7000个字符.也许更多(但一般少于7000)。

text_transform是一个数组,其元素是文本的单词。

provider是一个短字符串,我目前的最大长度是12个字符。

word_count是一个以键值对(数组)作为元素的数组,如下所示:

代码语言:javascript
复制
[
   ["key", value], ["other_key", other_value], ...
]

值是数字,键是字符串。

HOW是一个最多只有5个元素(即字符串)的数组。~6-10个字符。

我有自己的API,对某个端点的请求通常会触发一个查询。

我的问题是试图检索我的所有数据。

因此,我向这个端点发送一个请求:

代码语言:javascript
复制
router.get("/", async (req, res) => {
  try {
    const data = await DataSchema.find({}).lean();
    res.json(data);
  } catch (err) {
    res.status(404);
  }
});

如您所见,我已经使用了lean(),因为我可以使用一个简单的json。

但是,当我在客户端执行查询时:

DevTools(F12) -网络

xhr请求详细信息

此时,我的数据库中有大约270个文档。

我不认为这可能是网络问题,因为当我将查询限制在前10个元素时,它的速度要快得多,但仍然需要一秒钟左右的时间,这在我看来非常缓慢。

有什么办法让这件事更快吗?

另外,您可能感兴趣:对于开发,我使用的是MongoDB地图集的免费层(所以没有分析器和/或性能分析),而且我还没有在生产中,所以我没有生产环境可以在那里测试。此外,该地区是比利时(欧洲-西部1),这是最接近我,但这不应该真的有这么大的区别。

此外,我尝试删除text_transform,因为我现在不需要它。没什么区别。

编辑:

我忘了说,我实现了一个返回硬编码的json的端点。这是在不到1毫秒内完成的。这就是我认为查询速度慢的原因。

.explain()结果

代码语言:javascript
复制
[
  {
    queryPlanner: {
      plannerVersion: 1,
      namespace: 'test.articles',
      indexFilterSet: false,
      parsedQuery: {},
      winningPlan: [Object],
      rejectedPlans: []
    },
    executionStats: {
      executionSuccess: true,
      nReturned: 301,
      executionTimeMillis: 0,
      totalKeysExamined: 0,
      totalDocsExamined: 301,
      executionStages: [Object],
      allPlansExecution: []
    },
    serverInfo: {
      host: 'some.database-shard.mongodb.net',
      port: 27017,
      version: '4.2.6',
      gitVersion: '20364840b8f1af16917e4c23c1b5f5efd8b352f8'
    },
    ok: 1,
    '$clusterTime': { clusterTime: '6831457389108002820', signature: [Object] },
    operationTime: '6831457389108002820'
  }
]

感谢您抽出时间阅读,并感谢您提前提供帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-27 13:58:28

任何经历过同样问题的人。我怀疑它的MongoDB地图集,而且确实如此。

我相信,之所以查询缓慢,是因为MongoDB Atlas获得请求的速度快,查询速度快,但返回结果的速度非常慢。这可能是一个过载,因为它是一个免费的M0-沙箱包,使用共享服务器。我永远不会确切知道。另一方面,这是相当令人欣慰的,因为在这样的生产环境中,这样的事情不应该发生。

TL;博士

为了开发目的,我切换到了另一个免费的mongodb提供程序,一切都在瞬间加载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62038897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档