Mongodb 水线需要很长时间才能返回值

Mongodb 水线需要很长时间才能返回值,mongodb,sails.js,waterline,sails-mongo,Mongodb,Sails.js,Waterline,Sails Mongo,我们遇到了一个非常奇怪的问题。我们对MongoDB的简单查询需要很长时间才能返回任何文档。数据库索引良好。我们进行了一些测试,如下所示: File.find({sharename: '7iPJUtP2'}, function(err, shares){ console.log(err,shares); }); console.log在60秒后触发 然后我们使用.native()方法: 这里console.log在103ms内触发 我们使用的堆栈是: 帆:0.11.0 蒙哥帆:0.

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

File.find({sharename: '7iPJUtP2'}, function(err, shares){
      console.log(err,shares);
});
console.log在60秒后触发

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

这里console.log在103ms内触发

我们使用的堆栈是:

  • 帆:0.11.0
  • 蒙哥帆:0.11.5
  • MongoDB:2.0.1
  • 水线:0.10.28
有人能帮忙解决这个问题吗

更新

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

find({sharename:'a'})以18000毫秒执行


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

最后我发现了问题。Mongo查询生成器使查询看起来像
.find({sharename:/^qwerty$/i})
安装的
.find({sharename:'qwerty'}})
。它在最新的MongoDB版本中工作得很好,但对于Mongo2.0.1,它不使用索引

我必须在sails mongo包中直接解决这个问题。 我已经创建了fork,所以如果有人遇到这个问题,您可以使用它。
我终于找到了问题所在。Mongo查询生成器使查询看起来像
.find({sharename:/^qwerty$/i})
安装的
.find({sharename:'qwerty'}})
。它在最新的MongoDB版本中工作得很好,但对于Mongo2.0.1,它不使用索引

我必须在sails mongo包中直接解决这个问题。 我已经创建了fork,所以如果有人遇到这个问题,您可以使用它。

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