水线需要很长时间才能达到 return 的值

Waterline takes to long to return the value

我们遇到了非常奇怪的问题。我们对 MongoDB 的简单查询需要很长时间才能 return 任何文档。数据库索引良好。我们做了一些测试,这里是:

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 毫秒后触发。

我们使用的栈是:

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

更新

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

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

除共享名字段外,文档完全相同。

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

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