【问题标题】:Waterline takes to long to return the value水线需要很长时间才能返回值
【发布时间】:2015-12-01 13:13:06
【问题描述】:

我们遇到了非常奇怪的问题。我们对 MongoDB 的简单查询需要很长时间才能返回任何文档。数据库索引良好。我们进行了一些测试,结果如下:

File.find({sharename: '7iPJUtP2'}, function(err, shares){
      console.log(err,shares);
});

console.log 在 60 秒后触发。

然后我们使用 .native() 方法:

File.native(function(err, collection){
      collection.find({sharename: '7iPJUtP2'}, {})
         .toArray(function (err, results) {
            console.log(err,results);
         });
});

这里的 console.log 在 103 毫秒内触发。

我们使用的栈是:

  • 帆:0.11.0
  • sails-mongo: 0.11.5
  • MongoDB:2.0.1
  • 吃水线:0.10.28

有人可以帮忙解决这个问题吗?

更新

File.find({sharename: '1'}) 在 50 毫秒内执行。

File.find({sharename: 'a'}) 执行时间为 18000 毫秒。

除了 sharename 字段之外,文档都是相同的。

【问题讨论】:

    标签: mongodb sails.js waterline sails-mongo


    【解决方案1】:

    我终于找到了问题所在。 Mongo 查询生成器使查询看起来像 .find({ sharename: /^qwerty$/i }}) instaed .find({ sharename: 'qwerty' }})。它在最新的 MongoDB 版本中运行良好,但对于 mongo 2.0.1,它不使用索引。

    我必须直接在sails-mongo 包中解决这个问题。 我已经创建了 fork,所以如果有人遇到这个问题,你可以使用它。 https://github.com/rparaschak/sails-mongo.git

    【讨论】:

      猜你喜欢
      • 2014-07-21
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 2018-09-10
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多